Martin Fowler 的《重构》定义了软件工程的核心实践:在不改变代码外部行为的前提下,改善其内部结构。这本书的结构极其清晰——先讲重构的原则和信号,然后提供了一个详实的重构手法目录。

坏味道清单

Fowler 列举了一系列"坏味道",它们是代码需要重构的信号:神秘命名、重复代码、过长函数、过长参数列表、全局数据、可变数据、发散式变化(一个类因不同原因被修改)、霰弹式修改(一个变化导致多个类修改)。

核心重构手法

书中最常用的几个重构手法:提取函数(让长函数变得更清晰)、内联变量(消除不必要的间接)、移动函数/字段(把代码放在合适的位置)、以多态取代条件表达式(用设计模式替代复杂的 if-else)。

重构与测试

重构的前提是有可靠的测试。没有测试,重构就变成了赌博。每次重构一小步,每次重构后运行测试,保持项目的始终可运行状态。

重构不是项目的特定阶段,而是开发过程中持续的、有节奏的改进。