05-重构

重构

Refactoring是对软件内部结构的一种调整,目的是在不改变外部行为的前提下,提高其可理解性,降低其修改成本。

改进软件的设计
提高代码质量,更易被理解
Refactoring帮助尽早的发现错(Bugs)
Refactoring可以提高开发速度

重构的两顶帽子

[重构]与[添加新功能]之间的关系
添加新功能时,不应该修改既有代码,只管添加新功能。
重构时你就不能再添加功能,只管改进程序结构。此外你不应该添加任何测试(除非发现有先前遗漏的东西)

重构(Refactoring)的流程

流程1
读懂代码(包括测试例子代码)
重构Refactoring
运行所有的Unit Tests
流程2
读懂代码
应用重构工具进行重构(如Eclipse)
在这里插入图片描述

代码的坏味道

重复的代码 (Duplicated Code) ☆☆☆☆☆
2, 过长的函数(Long Method) ☆☆☆☆☆
3. 过大类(Large Class) ☆☆☆☆
4. 过长的参数列(Long Parameter List) ☆☆☆☆
5. 发散式变化(Divergent Change) ☆☆☆
6. 霰弹式修改实例
7. 依恋情结(Feature Envy) ☆☆☆
8. 数据泥团(Data Clumps) ☆☆☆
9. 分支语句(Swtich Statements) ☆☆☆☆
10. 过度耦合的消息链(Message Chains) ☆☆☆
11. 过多的注释(Comments) ☆☆
12. 夸夸其谈未来性(Speculative Generality) ☆☆☆
13. 纯粹的数据类(Data Class) ☆☆☆

重构技巧

重新组织函数
在对象之间搬移特性
重新组织数据
简化条件表达式
简化函数调用
处理概括关系
整洁代码视频1 2

重构名录实例
Extract Methods(提炼函数1)
Extract Methods(提炼函数2:清除注释)
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(替换算法)

Replace Nested Conditional with Guard Clauses使用保卫语句取代嵌套语句

Split Loop – 1分解循环
分解表达式
Remove Double Negative移除双重否认

在对象之间搬移特性
搬移函数(Move Method)
搬移值域(Move Field)
提炼类(Extract Class)
将类内联化(Inline Class)
隐藏[委托关系](Hide Delegate)
移除中间人(Remove Middle Man)
引入外加函数(Introduce Foreign Method)
引入本地扩展(Introduce Local Extension)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值