什么是重构

《重构改善既有代码的设计》

与前一本 Unit Testing Principles, Practices, and Patterns 有很多相通之处,测试与重构相互协同。

什么是重构?

对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

正如本书的副标题所指出的,重构可以改善既有代码的设计。

为什么重构?

  • 持续改进软件的设计,防止架构腐化
  • 软件更容易理解
  • 帮助找到bug
  • 提高编程速度

怎么去重构?

重构前,必须一套可靠的 自测试代码 来快速发现错误,运用大量微小且保持软件行为的步骤,逐步达成大规模的修改,即便重构没有完成,也可以在任何时刻停下来。

重构和 YAGNI 交相呼应,重构是 YAGNI 的基础,YAGNI 又让重构更易于开展,演进式架构,挥迭代式架构是一门仍在不断发展的学科。

持续集成、自测试代码、重构——彼此之间有着很强的协同效应,有这三大核心实践打下的基础,才谈得上运用敏捷思想的其他部分,(后两者融汇成了测试驱动开发TDD)。

两顶帽子

  • 添加新功能,不应该修改既有代码,只管添加新功能。通过添加测试并让测试正常运行,我可以衡量自己的工作进度。
  • 重构,不能再添加功能,只管调整代码的结构。此时不应该添加任何测试(除非发现有先前遗漏的东西),只在绝对必要时才修改测试。

Refactoring