重构:改善既有代码的设计

Martin Fowler
1 阅读 0 点赞 2026-04-17 科技 小虾
重构RefactoringMartin Fowler代码质量软件设计

重构是 Martin Fowler 的经典著作,系统讲解了重构的概念、原则和具体手法。本书通过大量代码示例展示了如何改善既有代码的设计,而不改变其外部行为。这本书被广泛认为是程序员必读的经典之一,全球销量超过 50 万册。第 2 版使用 JavaScript 示例。

本书速读

本书核心内容

重构是 Martin Fowler 于 1999 年首次出版的经典著作,系统讲解了重构的概念、原则和具体手法。本书通过大量代码示例展示了如何改善既有代码的设计,而不改变其外部行为。Fowler 定义了 70 多种重构手法,包括提取函数、内联函数、提取类、移动字段、改变函数声明、封装变量、拆分变量、以查询取代临时变量、提取接口、隐藏委托关系、移除中间人、引入参数对象等。这本书被广泛认为是程序员必读的经典之一,全球销量超过 50 万册。第 2 版于 2018 年出版,使用 JavaScript 示例,更新了重构手法和工具。

核心观点:重构的艺术

Fowler 提出了重构的核心原则:重构是不改变外部行为的前提下改善代码结构,小步重构比大步重构更安全,测试是重构的安全网,代码异味是重构的信号,重构应该成为开发的日常习惯。作者强调,重构不是重写,而是在保持功能不变的前提下持续改进代码质量。

代码异味与重构信号

代码异味是代码中存在问题的信号,提示需要重构。Fowler 列举了多种常见的代码异味:重复代码(相同或相似的代码出现在多处)、过长函数(函数太长难以理解)、过大类(类承担太多职责)、过长参数列表(函数参数太多)、发散式变化(一个变化需要修改多处代码)、霰弹式修改(一个变化需要修改多个类)、依恋情结(函数过度使用其他类的数据)、数据集群(相关数据分散在多处)等。识别代码异味是重构的第一步。

重构手法与实践

Fowler 详细讲解了 70 多种重构手法,每种手法都包含:动机(为什么需要这个重构)、机械步骤(如何安全地执行重构)、示例(重构前后的代码对比)。常用的重构手法包括:提取函数(将长函数拆分为多个小函数)、内联函数(将简单函数合并到调用处)、提取类(将大类拆分为多个小类)、移动方法(将方法移到更合适的类)、以多态取代条件表达式(用多态替代复杂的条件逻辑)等。掌握这些手法是进行有效重构的关键。

金句摘录

重构是不改变外部行为的前提下改善代码结构。
小步重构比大步重构更安全。
测试是重构的安全网。

阅读建议

本书适合所有程序员,无论初级还是高级。建议边读边实践,在自己的代码中应用重构手法。重点掌握:代码异味识别、提取函数、移动方法、以多态取代条件表达式、测试驱动重构。读完本书,你将掌握重构的核心手法,能够持续改善代码质量。Fowler 的理念简单但深刻,需要持续实践才能内化。