Refactoring 2nd Edition
作者: Martin Fowler
语言: 英文
出版年份: 2018
下载链接:
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。

书籍摘要

Refactoring: Improving the Design of Existing Code, Second Edition

书籍定位

《重构:改善既有代码的设计(第二版)》是由软件工程领域权威Martin Fowler编写的经典著作,由Addison-Wesley Professional出版社于2019年出版。本书是重构领域的奠基性作品,系统性地介绍了如何在不改变代码外部行为的前提下改善其内部结构,是软件工程师、架构师和开发团队提升代码质量的必备指南。

核心内容

本书通过12个章节和详细的代码重构目录,全面阐述了重构的理论、原则和实践方法:

第一部分:重构基础(第1-5章)

  1. 重构示例(第1章):通过一个戏剧演出计费系统的完整重构过程,展示重构的实际应用。从简单的函数分解开始,逐步进行阶段分离、多态计算等重构,最终形成清晰、可维护的代码结构。

  2. 重构原则(第2章):明确定义重构的概念,区分"添加功能"和"重构"两种工作模式。讨论重构的原因、时机、挑战,以及重构与架构设计、软件开发过程、性能优化的关系。

  3. 代码坏味道(第3章):由Kent Beck协助编写,系统性地识别代码中的问题迹象,包括神秘命名、重复代码、过长函数、过长参数列表、全局数据、可变数据、发散式变化、霰弹式修改、依恋情结、数据泥团、基本类型偏执、重复的switch语句、循环、冗赘的元素、夸夸其谈未来性、临时字段、过长的消息链、中间人、内幕交易、过大的类、异曲同工的类、纯数据类、被拒绝的遗赠、过多的注释等24种常见问题。

  4. 构建测试(第4章):强调自测试代码的价值,介绍如何为重构建立可靠的测试套件,包括测试边界条件和修改测试夹具。

  5. 重构目录介绍(第5章):说明重构条目的格式和组织方式,为后续的具体重构技术提供导航。

第二部分:重构技术目录(第6-12章)

  1. 第一组重构(第6章):包括提取函数、内联函数、提取变量、内联变量、改变函数声明、封装变量、重命名变量、引入参数对象、将函数组合成类、将函数组合成变换、拆分阶段等11个基础重构。

  2. 封装(第7章):涵盖封装记录、封装集合、以对象取代基本类型、以查询取代临时变量、提取类、内联类、隐藏委托、移除中间人、替换算法等9个封装相关重构。

  3. 移动特性(第8章):包括搬移函数、搬移字段、搬移语句到函数、搬移语句到调用者、以函数调用取代内联代码、移动语句、拆分循环、以管道取代循环、移除死代码等9个移动相关重构。

  4. 重新组织数据(第9章):涵盖拆分变量、重命名字段、以查询取代派生变量、将引用对象改为值对象、将值对象改为引用对象等5个数据组织重构。

  5. 简化条件逻辑(第10章):包括分解条件表达式、合并条件表达式、以卫语句取代嵌套条件表达式、以多态取代条件表达式、引入特例、引入断言等6个条件逻辑重构。

  6. 重构API(第11章):涵盖将查询函数和修改函数分离、函数参数化、移除标记参数、保持对象完整、以查询取代参数、以参数取代查询、移除设值函数、以工厂函数取代构造函数、以命令取代函数、以函数取代命令等10个API设计重构。

  7. 处理继承关系(第12章):包括函数上移、字段上移、构造函数本体上移、函数下移、字段下移、以子类取代类型码、移除子类、提取超类、折叠继承体系、以委托取代子类、以委托取代超类等11个继承相关重构。

本书共收录了63个具体的重构技术,每个重构都包含名称、动机、做法和范例,形成完整的重构知识体系。

适用读者

  • 软件工程师:希望提升代码质量和可维护性的开发者
  • 技术架构师:需要指导团队进行代码改进的技术领导者
  • 项目管理者:理解重构价值,合理安排重构工作
  • 软件质量保障人员:识别代码问题并推动改进
  • 计算机科学学生:学习软件工程最佳实践
  • 任何需要维护和演进现有代码库的开发人员

阅读建议

  1. 从示例开始:首先阅读第1章的完整重构示例,理解重构的实际过程和价值
  2. 掌握原则:深入理解第2章的重构原则,建立正确的重构观念
  3. 识别问题:熟练运用第3章的"代码坏味道"识别代码中的问题
  4. 建立测试:重视第4章的测试方法,确保重构的安全性
  5. 按需查阅:将重构目录作为参考工具,在实际工作中根据需要查找具体重构技术
  6. 循序渐进:从小规模重构开始,逐步积累经验,再尝试更复杂的重构
  7. 团队协作:在团队中推广重构文化,建立代码质量共识

本书第二版更新了JavaScript示例代码,使其更符合现代开发实践,同时保持了重构技术的普适性。无论使用何种编程语言,开发者都能从本书中获得宝贵的重构知识和实践经验。重构不仅是技术手段,更是一种持续改进的软件开发哲学。

期待您的支持
捐助本站