重构技巧:函数重组与数据组织策略
需积分: 11 71 浏览量
更新于2024-07-11
收藏 3.37MB PPT 举报
"这篇文档主要介绍了软件重构中的常用技巧,由刘伟(Sunny)撰写,内容涵盖重构列表、重新组织函数、在对象之间搬移特性以及重新组织数据等多个方面。文档详细列举了各种重构方法,旨在提升代码质量和可维护性。"
在软件开发中,重构是一种改善代码结构而不改变其外在行为的过程。以下将详细阐述标题和描述中提到的几个关键知识点:
1. **重构列表**
重构列表中列举了一系列重构技术,这些技术主要用于优化代码结构,提高代码的可读性和可维护性。其中包括:
- **提取方法(Extract Method)**:将大函数分解为更小、更具描述性的函数,使代码逻辑更清晰。
- **内联方法(Inline Method)**:将一个方法的调用替换为方法体,减少间接调用,简化代码。
- **内联临时变量(Inline Temp)**:消除临时变量,直接使用计算结果,减少变量管理。
- **用查询替换临时变量(Replace Temp with Query)**:用一个函数或表达式替代临时变量,使代码意图更明确。
- **引入解释性变量(Introduce Explaining Variable)**:为复杂表达式创建一个有意义的变量名,增强代码可读性。
- **拆分临时变量(Split Temporary Variable)**:将一个临时变量拆分为多个,反映不同逻辑阶段。
- **移除参数赋值(Remove Assignments to Parameters)**:避免在函数内部修改参数,保持参数的不变性。
- **用方法对象替换方法(Replace Method with Method Object)**:将一个大方法转换为一个对象,使得代码结构更清晰。
- **替换算法(Substitute Algorithm)**:用另一种算法替换现有算法,以改进性能或简化代码。
2. **在对象之间搬移特性(Moving Features Between Objects)**
这些重构技术涉及调整类之间的职责分配,以优化设计和减少冗余:
- **移动方法(Move Method)**:将方法从一个类移到更适合执行该操作的类。
- **移动字段(Move Field)**:将字段移动到更适合访问它的类。
- **提取类(Extract Class)**:当一个类承担过多职责时,将一部分职责分离到新的类中。
- **内联类(Inline Class)**:如果一个类只在一个地方使用,可以考虑将其内容内联到使用它的类中。
- **隐藏委托(Hide Delegate)**:去除不必要的中介,直接在客户端代码中与目标对象交互。
- **移除中间人(Remove Middle Man)**:消除不必要的代理或中介对象。
- **引入外部方法(Introduce Foreign Method)**:在不拥有源代码的类上添加辅助方法。
- **引入本地扩展(Introduce Local Extension)**:在原有类的基础上创建一个子类,以添加特定的局部功能。
3. **重新组织数据(Organizing Data)**
这部分涵盖了数据结构和数据访问的重构:
- **自封装字段(Self Encapsulate Field)**:通过访问器和修改器保护字段,确保数据的一致性。
- **用对象替换数据值(Replace Data Value with Object)**:将原始数据类型转换为对象,以便提供额外的业务逻辑。
- **将引用改为值(Change Reference to Value)**:在适合的情况下,将对象的引用替换为对象的副本。
- **将值改为引用(Change Value to Reference)**:根据需要,将对象的副本替换为其引用。
- **用对象替换数组(Replace Array with Object)**:创建一个专门的类来管理和操作数组。
- **复制被观察的数据(Duplicate Observed Data)**:复制数据以避免共享状态,提高并发安全性。
- **将单向关联改为双向关联(Change Unidirectional Association to Bidirectional)**:根据需求增加双向链接。
- **将双向关联改为单向关联(Change Bidirectional Association to Unidirectional)**:简化关系,减少耦合。
- **用常量替换魔法数字(Replace Magic Number with Symbolic Constant)**:将硬编码的数值替换为具有描述性的常量。
- **封装字段(Encapsulate Field)**:与Self Encapsulate Field类似,但可能涉及一组字段。
- **封装集合(Encapsulate Collection)**:为集合类提供访问接口,控制对集合的操作。
- **用数据类替换记录(Replace Record with Data Class)**:用一个简单的类来表示数据记录。
- **用类替换类型码(Replace Type Code with Class)**:为每种类型码创建一个类,增强类型的安全性和可读性。
- **用子类替换类型码(Replace Type Code with Subclasses)**:使用继承结构代替类型码。
这些重构技术是持续改进代码质量的重要工具,它们可以帮助开发者在不破坏现有功能的前提下,逐步优化代码,提升软件的整体架构和设计。在实际开发中,根据具体情况选择合适的重构策略,能够有效降低维护成本,提高软件的长期可维护性和可扩展性。
2018-01-15 上传
2013-04-17 上传
2012-03-31 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
theAIS
- 粉丝: 57
- 资源: 2万+
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍