《重构》简体版第6章精华:优化代码设计策略
需积分: 50 168 浏览量
更新于2024-07-30
收藏 1.27MB PDF 举报
《重构-改善既有代码的设计(简体中文).pdf》是一本经典的编程书籍,作者侯捷针对软件开发过程中如何改进已有的代码进行了深入阐述。本书的核心理念是通过一系列“重构”技术,提升代码质量,使其更易于理解和维护。书中列举了多个重构策略,包括但不限于:
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(提炼类)** - 从现有类中分离出具有独立行为或职责的部分,创建新类,增强模块化。
每个重构方法都是作者对代码优化的一种实践,旨在帮助开发者写出更清晰、高效且易于维护的代码。通过阅读这本书,程序员可以学习如何在不改变外部行为的前提下,逐步改进现有代码结构,从而提高软件的质量和可扩展性。
2017-01-20 上传
点击了解资源详情
2009-07-16 上传
点击了解资源详情
点击了解资源详情
2010-07-31 上传
2021-04-02 上传
2021-03-21 上传
点击了解资源详情
Michael_Liu
- 粉丝: 8
- 资源: 1
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器