《重构改善既有代码的设计》
与前一本 Unit Testing Principles, Practices, and Patterns 有很多相通之处,测试与重构相互协同。
什么是重构?
对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
正如本书的副标题所指出的,重构可以改善既有代码的设计。
为什么重构?
- 持续改进软件的设计,防止架构腐化
- 软件更容易理解
- 帮助找到bug
- 提高编程速度
怎么去重构?
重构前,必须一套可靠的 自测试代码 来快速发现错误,运用大量微小且保持软件行为的步骤,逐步达成大规模的修改,即便重构没有完成,也可以在任何时刻停下来。
重构和 YAGNI 交相呼应,重构是 YAGNI 的基础,YAGNI 又让重构更易于开展,演进式架构,挥迭代式架构是一门仍在不断发展的学科。
持续集成、自测试代码、重构——彼此之间有着很强的协同效应,有这三大核心实践打下的基础,才谈得上运用敏捷思想的其他部分,(后两者融汇成了测试驱动开发TDD)。
两顶帽子
- 添加新功能,不应该修改既有代码,只管添加新功能。通过添加测试并让测试正常运行,我可以衡量自己的工作进度。
- 重构,不能再添加功能,只管调整代码的结构。此时不应该添加任何测试(除非发现有先前遗漏的东西),只在绝对必要时才修改测试。