重构:改善既有代码的设计(简体中文版)
需积分: 9 69 浏览量
更新于2024-07-31
收藏 1.27MB PDF 举报
"重构-改善既有代码的设计(简体中文).pdf"
《重构:改善既有代码的设计》是一本经典的软件开发著作,由Martin Fowler撰写,旨在介绍如何通过一系列微小的改变,逐步提升现有代码的质量和可维护性。这本书强调的是在不改变代码外在行为的前提下,对代码结构进行优化,这一过程被称为“重构”。
书中的重构,是一种系统性的方法,它包含了多个具体的重构技术,如:
1. AddParameter(添加参数):在函数或方法中添加新的参数,以传递更多信息,简化内部逻辑。
2. ChangeBidirectionalAssociationtoUnidirectional(将双向关联改为单向):减少对象间的耦合度,使得一个对象不再需要知道另一个对象的更新。
3. ChangeReferencetoValue(将引用对象改为实值对象):将依赖于对象引用的情况改为直接使用值,以提高性能或简化代码。
4. ChangeUnidirectionalAssociationtoBidirectional(将单向关联改为双向):在某些情况下,增加双向关联可以增强代码的表达力和易用性。
5. ChangeValuetoReference(将实值对象改为引用对象):当需要对对象进行更复杂的操作时,将简单的值类型转换为引用类型。
6. CollapseHierarchy(折叠继承体系):简化类层次结构,减少不必要的子类。
7. ConsolidateConditionalExpression(合并条件式):减少复杂的条件判断,提高代码可读性。
8. ConsolidateDuplicateConditionalFragments(合并重复的条件片段):消除代码中的重复条件,确保一致性。
9. ConvertProceduralDesigntoObjects(将过程化设计转化为对象设计):利用面向对象的原则,将过程化的代码转换为更具有封装性和复用性的对象。
10. DecomposeConditional(分解条件式):将大的条件表达式分解为多个独立的函数或方法,使代码更加模块化。
11. DuplicateObservedData(复制“被监视数据”):当需要在多个地方使用同一数据时,创建一个公共的访问点。
12. EncapsulateCollection(封装群集):隐藏集合类的细节,提供一个更友好的接口来操作这些集合。
13. EncapsulateDowncast(封装“向下转型”动作):避免显式的类型转换,提供安全且易于使用的接口。
14. EncapsulateField(封装值域):隐藏类的内部状态,提供访问和修改状态的受控方式。
15. ExtractClass(提炼类):将一个大类中的职责拆分成多个更专注的小类。
16. ExtractHie...(这里省略了部分重构技术的名称,但它们遵循相同的模式,即改善代码结构和可读性)
通过这些重构技术,开发者可以逐步改进代码的结构,使其更易于理解、测试和维护。此外,书中还提供了关于何时、为何以及如何进行重构的指导原则,以及如何避免可能的风险,比如引入错误或破坏现有功能。
侯捷的中文版译本,考虑到了两岸不同的术语习惯,分别提供了“台湾术语版”和“大陆术语版”,确保了内容对中国读者的适用性。阅读这本书,对于任何希望提高代码质量、提升开发效率的软件工程师来说,都是极其宝贵的资源。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2017-01-20 上传
2009-07-16 上传
点击了解资源详情
2010-07-31 上传
2021-04-02 上传
2021-03-21 上传
better_whx
- 粉丝: 0
- 资源: 5
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器