重构 改善既有代码的设计(第2版)
分类:计算机与软件工程 / 数据结构、算法与软件设计
书籍简介
Martin Fowler 的《重构》讨论如何在保持可观察行为的前提下改善既有代码结构。它适合已经写过一些业务代码、开始面对修改困难与重复逻辑的开发者,核心价值在于提供可分步执行和验证的改进方法。
阅读时应把“发现坏味道”和“立即大改”分开。坏味道提供调查线索,真正的重构还需要理解当前行为、建立反馈,再选择足够小的步骤。
版本说明
本页对应 2018 年出版的英文第二版及其中文译本,以 JavaScript 为主要示例语言,采用 12 章结构。不能使用第一版的 15 章目录替代第二版;作者官网的第二版说明和重构目录用于核对版本与手法分类。中文章名采用常见译法,具体用词以纸书为准。
作者与背景
作者 Martin Fowler 长期撰写软件设计与企业应用相关著作,其个人介绍说明了 Thoughtworks 背景;官网将第二版标注为2018年出版,并注明 Kent Beck 的参与。权威性来自对可保持行为的小步变换的系统整理与公开名录,书中“坏味道”仍需要结合代码语境判断。
目标读者
适合写过业务代码、能运行测试、开始面对修改困难的开发者。维护遗留系统者可以从第一章和测试章节进入;若尚无任何反馈机制,应先建立关键行为保护,再尝试结构变换。
章节介绍
| 章节 | 核心内容 |
|---|---|
| 第1章 重构,第一个示例 | 从完整业务示例展示小步修改、测试反馈与结构演进,先理解过程。 |
| 第2章 重构的原则 | 解释重构的定义、时机、收益和边界,区分增加功能与调整结构。 |
| 第3章 代码的坏味道 | 用长函数、重复代码等信号定位维护困难,但不把信号视为自动修改指令。 |
| 第4章 构筑测试体系 | 建立能快速反馈行为变化的测试,讨论测试案例与边界选择。 |
| 第5章 介绍重构名录 | 说明后续手法的组织方式,包括动机、操作步骤和示例。 |
| 第6章 第一组重构 | 学习提炼函数、变量调整和阶段拆分等常用基础动作。 |
| 第7章 封装 | 通过封装记录、集合和变量,调整数据与使用者之间的边界。 |
| 第8章 搬移特性 | 移动函数、字段和语句,使相关行为出现在更合适的位置。 |
| 第9章 重新组织数据 | 改善变量、字段与对象表示,让数据的含义和变化方式更明确。 |
| 第10章 简化条件逻辑 | 分解条件、引入卫语句或多态,减少嵌套和难以理解的分支。 |
| 第11章 重构 API | 调整参数、查询与修改的关系,使调用接口更容易理解和正确使用。 |
| 第12章 处理继承关系 | 通过提炼、上移、下移或委托等手法重新组织类型关系。 |
读后感
以下为本站阅读评析,用可实践的阅读目标表达收获,不代表书单提供者已经读完、任职或完成相应项目。版本未明时,评析只针对本页明确标注的主题或参考版本。
金句摘抄或阅读提炼
能随时验证的一小步,比无法解释的一次大改更容易积累。
这是本站原创阅读提炼,不是原书引文;没有可核对页码的原文不作逐字摘抄。
个人收获
选一个长函数先补关键行为用例,再只提炼一个职责清楚的片段,运行测试并检查调用语义。把“修改结构”和“改变需求”分成独立步骤,失败时更容易定位,也能避免用重构名义夹带行为变化。
客观评价与阅读建议
名录提供可操作步骤,但不是统一代码风格;提炼与内联、继承与委托都可能成立。第二版使用 JavaScript,读者仍须按自己的语言和可观察行为判断适用性;已有测试也可能遗漏外部副作用和性能约束。
推荐语(本站原创,非原书引用): 推荐给想让代码更容易改、却担心越改越乱的人:先学会缩小每一步,再寻找更大的设计收益。
来源与核对入口
- Martin Fowler:Refactoring 第二版介绍:版本、示例语言与阅读资源入口。
- 作者维护的重构名录:核对第二版手法及分类,配合原书阅读。
- 第一章示例练习仓库:作者页面推荐的多语言练习入口。
- Martin Fowler:个人背景:核对其软件设计写作方向与职业背景。
继续阅读
- 书籍导读
- 书籍导读
- 书籍导读