本文假定在问题比较简单的情况下进行。
我有如下几个程序模块:
- 数据清理总调度,它调度以下几个子任务来完成目标
- 数据清理任务1
- 数据清理任务2
- 数据清理任务3
现在要记录数据清理日志,需要往CLEAN_LOG表中insert清理数据记录,那么现在我有两种做法:
【方法1】
在子任务中,各自执行insert日志记录的操作。
【方法2】
在总任务中,每调用一个子任务执行一次insert日志记录的操作。
我就这个问题问了我们团队的成员,大家都表示二者没有什么区别,都一样。
大家都知道,单就这个具体事情而言,其实两种做法的工作量是一样的。
但从软件学的角度而言,一般地,我们应当选择【方法2】。为什么呢?
这就是我们常说的一些软件学思想了:
高内聚与低耦合、单一职责原则、可复用可重用、、、
如果将日志记录的操作分散放在各个子模块中进行,
那就违背了各个子模块执行单一职责(清理特定数据)的原则,而且记录日志需要和模块外的日志表等环境产生依赖(耦合),从而破坏了其内聚性,可想而知 最终其重用性就会大打折扣。而一旦软件失去了重用性,那软件本原的优势也就不复存在了。
反之,如将日志记录操作集中放在总调度模块中进行,
则可以很好的规避上面的种种问题。
当然,你也不用担心各模块日志信息的反馈问题,
这可以通过增加子任务的调用返回值来实现。