王争《设计模式之美》学习笔记
代码重构优化
- 我们可以将 ConsoleReporter 和 EmailReporter 中的相同代码逻辑,提取到父类 ScheduledReporter 中,以解决代码重复问题。
- 上一步的重构之后,EmailReporter 中的 startDailyReport() 函数的核心逻辑已经被抽离出去了,较复杂的、容易出 bug 的就只剩下计算 firstTime 的那部分代码了。我们可以将这部分代码继续抽离出来,封装成一个函数 trimTimeFieldsToZeroOfNextDay(),然后,单独针对这个函数写单元测试。
- 但我们发现这个函数的可测试性仍然不好,因为它强依赖当前的系统时间。解决方法是将强依赖的部分通过参数传递进来,对TimeFieldsToZeroOfNextDay() 函数进行重构。
功能需求完善
- 版本3已经实现了大部分的功能,还有以下几个小的功能点没有实现:
- 被动触发统计的方式,也就是需求中提到的通过网页展示统计信息。我们可以复用框架现在的代码,编写一些展示页面和提供获取统计数据的接口即可。
- 对于自定义显示终端,只需要提供一些获取统计数据的接口,监控平台通过这些接口拉取数据来显示即可。
- 自定义显示格式。将显示终端和显示格式的代码分离,让显示终端支持配置不同的显示格式。
非功能需求完善
- 易用性
- 框架的使用者将框架集成到自己的系统中时,