历时一个多月的时间,代码重构系列终于写完了,代码的坏味道大家一看都不会陌生,绝对是在我们的编程中如影随形的,现在把相应的重构方法和设计模式总结出来,以供大家参考.因为不论是重构还是应用设计模式,一切的目的都是为了软件构架的“优雅”,而不是炫耀技术。
步步为营 .NET 代码重构学习笔记系列
步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)
步步为营 .NET 代码重构学习笔记 三、内联方法(Inline Method)
步步为营 .NET 代码重构学习笔记 四、临时变量(Temporary Variable)
步步为营 .NET 代码重构学习笔记 五、分解函数和替换算法(Replace Method And Substitute Algorithm)
步步为营 .NET 代码重构学习笔记 六、移动函数和移动值域(Move Method And Move Field)
代码的坏味道 |
一般重构方法 |
使用模式重构 |
重复代码 |
提炼方法 |
构造Template Method |
过长方法 |
提取方法 |
转移聚集操作到Vistor |
过长参数列 |
以方法取代参数 |
|
条件逻辑过度复杂 |
分解条件式 |
以Strategy取代条件逻辑 |
分支语句 |
提取方法 |
以State/Strategy取代类型代码 |
基本类型迷恋 |
以对象取代数据值 |
以State取代状态改变条件语句 |
数据泥团 |
提取类 |
|
令人迷惑的临时字段 |
提取类 |
引入Null Object |
组合爆炸 |
以Interpreter取代隐式语言 |
|
过大类 |
提取类 |
以Command取代条件调度程序 |
冗赘类 |
折叠继承关系 |
|
不恰当的暴露 |
封装字段 |
用Factory封装类 |
发散式变化 |
提取类 |
|
霰弹式修改 |
转移方法 |
将创建知识搬移到Factory |
依恋情结 |
转移方法 |
引入Strategy |
平行继承体系 |
转移方法 |
|
夸夸其谈未来性 |
折叠继承关系 |
|
过度耦合的消息连 |
隐藏委托 |
使用抽象引入Chain Of Responsibility |
中间转手人 |
移除中间转手人 |
|
狎昵关系 |
转移方法 |
|
异曲同工的类 |
重命名方法 |
用Adapter统一接口 |
不完善的程序库类 |
引入外加方法 |
用Adapter统一接口 |
纯稚的数据类 |
封装字段 |
|
被拒绝的遗赠 |
以委托取代继承 |
|
过多的注释 |
使用一起重构方法,使方法本身达到自说明的效果,让注释显得多余 |
|
怪异解决方案 |
替换算法 |
用Adapter统一接口 |