【问题标题】:What's the cleanest way to check if logging is enabled?检查是否启用了日志记录的最干净的方法是什么?
【发布时间】:2018-05-03 14:44:00
【问题描述】:

我正在实施一个软件,用户可以在开始一项任务之前决定是否要为此任务创建一个日志文件。

  • 如果启用了日志记录,则会创建一个 csv-writer
  • 在整个代码中有几行使用 csv-writer 写入日志
  • csv-writer 被处理

现在有三种方法可以检查是否启用了日志记录,我不喜欢其中任何一种:

  1. 每次创建或访问 csv-writer 时,在其前面放置一个“if (isLogging)”检查(大量调用)
  2. 创建一个 csv-writer 接口并调用该接口。创建另一个 EmptyCsvWriter 实现接口并具有空方法并在 isLogging 为 false 时初始化此方法(创建“假”空对象似乎是错误的)
  3. 创建 csv-writer 并传递 isLogging。检查 csv-writer 内部是否在每个方法调用上都启用了 isLogging(为什么甚至首先创建 csv-writer 对象 - 似乎也是错误的)

【问题讨论】:

  • 第二个选项是最优雅的一个。它使所有代码更简单,更容易测试。但是,如果您需要计算 csv 写入器采用的输入,它的效率不如第一个:如果写入器丢弃它们,您将一无所有地产生输出。另一方面,好处是即使您使用 noop 编写器,您也可以检测到此输入生成代码中的错误。
  • 谢谢。你想把它作为答案发布,所以我可以勾选它吗?

标签: design-patterns architecture software-design


【解决方案1】:

第二个选项是最优雅的。它使所有代码更简单,更容易测试。

但是,如果您需要计算 csv 写入器所采用的输入,它的效率不如第一个:如果写入器丢弃它们,您将一无所获地产生输出。另一方面,好处是即使您使用 noop 编写器,您也可以检测到此输入生成代码中的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 2019-12-19
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2011-06-23
    相关资源
    最近更新 更多