重构代码设计:Martin Fowler的实战指南

5星 · 超过95%的资源 需积分: 1 34 下载量 132 浏览量 更新于2024-07-27 收藏 30.97MB PDF 举报
《重构-改善既有代码的设计》是Martin Fowler的经典著作,该书详细探讨了如何在不改变系统外部行为的前提下,优化内部结构,以提高代码质量、可读性以及可维护性。重构是一种重要的软件工程实践,它强调的是通过一系列小型、安全、无副作用的修改,来改进代码的结构,而不是添加新功能或修复错误。 书中深入剖析了重构的基本原则和策略,如提取方法、内聚函数、替换重复计算、消除临时变量、将单个职责对象封装为类等,这些都是为了遵循SOLID原则(单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则)和DRY(Don't Repeat Yourself)原则。重构有助于减少代码复杂性,使团队成员更容易理解并协作,同时也降低了未来引入错误的可能性。 Fowler通过丰富的实例展示了重构的过程,读者可以在实践中学习如何识别重构机会,评估风险,并有效地进行重构操作。此外,他还讨论了重构工具的重要性,比如使用IDE的内置重构功能,或者编写脚本来自动化这些过程,以提高效率。 《重构-改善既有代码的设计》不仅适合已经有一定编程经验的开发者提升代码质量,也是初学者了解软件工程最佳实践的宝贵资源。作者马丁·福勒在软件领域享有盛誉,他的观点和方法论对软件开发社区产生了深远影响。 文件中提到的一些链接指向了计算机领域的各种学习资源,涵盖了软考教材、编程语言教程(如Java、.NET、C/C++、Perl/CGI、Python、Ruby/Rails、数据库、HTML/CSS、JavaScript/Ajax、PHP、UML、Linux、Unix、FreeBSD/NetBSD、Solaris/OpenSolaris等)和系统管理的学习资料,这些都与重构相关,可以作为进一步深入学习和实践重构的补充资源。 《重构-改善既有代码的设计》是一本不可多得的IT专业书籍,对于所有关心代码质量和软件工程的人来说,无论是理论学习还是实践经验,都具有很高的价值。
2018-04-23 上传
重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。 本书凝聚了软件开发社区专家多年摸索而获得的宝贵经验,拥有不因时光流逝而磨灭的价值。今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与本书最初出版时不可同日而语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,而且往往能够常读常新。 第1章 重构,第一个案例 1.1 起点 1.2 重构的第一步 1.3 分解并重组statement() 1.4 运用多态取代与价格相关的条件逻辑 1.5 结语 第2章 重构原则 2.1 何谓重构 2.2 为何重构 2.3 何时重构 2.4 怎么对经理说 2.5 重构的难题 2.6 重构与设计 2.7 重构与性能 2.8 重构起源何处 第3章 代码的坏味道 3.1 Duplicated Code(重复代码) 3.2 Long Method(过长函数) 3.3 Large Class(过大的类) 3.4 Long Parameter List(过长参数列) 3.5 Divergent Change(发散式变化) 3.6 Shotgun Surgery(霰弹式修改) 3.7 Feature Envy(依恋情结) 3.8 Data Clumps(数据泥团) 3.9 Primitive Obsession(基本类型偏执) 3.10 Switch Statements(switch惊悚现身) 3.11 Parallel InheritanceHierarchies(平行继承体系) 3.12 Lazy Class(冗赘类) 3.13 Speculative Generality(夸夸其谈未来性) 3.14 Temporary Field(令人迷惑的暂时字段) 3.15 Message Chains(过度耦合的消息链) 3.16 Middle Man(中间人) 3.17 Inappropriate Intimacy(狎昵关系) 3.18 Alternative Classes with Different Interfaces(异曲同工的类) 3.19 Incomplete Library Class(不完美的库类) 3.20 Data Class(纯稚的数据类) 3.21 Refused Bequest(被拒绝的遗赠) 3.22 Comments(过多的注释) 第4章 构筑测试体系 4.1 自测试代码的价值 4.2 JUnit测试框架 4.3 添加更多测试 第5章 重构列表 5.1 重构的记录格式 5.2 寻找引用点 5.3 这些重构手法有多成熟 第6章 重新组织函数 6.1 Extract Method(提炼函数) 6.2 Inline Method(内联函数) 6.3 Inline Temp(内联临时变量) 6.4 Replace Temp with Query(以查询取代临时变量) 6.5 Introduce Explaining Variable(引入解释性变量) 6.6 Split Temporary Variable(分解临时变量) 6.7 Remove Assignments to Parameters(移除对参数的赋值) 6.8 Replace Method with Method Object(以函数对象取代函数) 6.9 Substitute Algorithm(替换算法) 第7章 在对象之间搬移特性 7.1 Move Method(搬移函数) 7.2 Move Field(搬移字段) 7.3 Extract Class(提炼类) 7.4 Inline Class(将类内联化) 7.5 Hide Delegate(隐藏“委托关系”) 7.6 Remove Middle Man(移除中间人) 7.7 Introduce Foreign Method(引入外加函数) 7.8 Introduce Local Extension(引入本地扩展) 第8章 重新组织数据 8.1 Self Encapsulate Field(自封装字段) 8.2 Replace Data Value with Object(以对象取代数据值) 8.3 Change Value to Reference(将值对象改为引用对象) 8.4 Change Reference to Value(将引用对象改为值对