检查是否启用了日志记录的最简洁方法是什么?

时间:2017-11-20 11:31:08

标签: design-patterns architecture software-design

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

  • 如果启用了日志记录,则会创建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对象 - 看起来也是错误的)

1 个答案:

答案 0 :(得分:2)

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

但是,如果你需要计算csv编写器所采用的输入,它就不如第一个那么有效:如果编写器丢弃它们,你将产生无输出。另一方面,奖金是即使您使用noop writer,也会检测此输入生成代码中的错误。