读《重构》4~最后

来源:互联网 发布:剑网三曹雪阳捏脸数据 编辑:程序博客网 时间:2024/05/16 07:59
本书在读的是纸版,也收藏了 PDF 版本的。
此篇只写了目录方便理解这点重构方法。

第4章,测试
编写测试为担心的地方,而不是全部。
测试代码与生产代码,要分开放置,原因有几条,最重要的一条是,生产代码不可能常修改,而权限不可能给你那么大。而测试代码却要常修改。

第5章~12章,重构列表
许多IDE 查找一个目录(代码项目)的引用点很方便,但是要小心反射机制是查找不到的。
这里的重构手法是单进程软件,多进程的是另一种方法了。

第6章,重新组织函数,9点
(http://blog.csdn.net/hguisu/article/details/7598066)
1,提炼函数(Extract Method),
2,Inline Method 内联函数
3,Inline Temp 内联临时变量
4,Replace Temp with Query 以查询取代临时变量
5,Introduce Explain Variable 引入解释性变量
6,分解临时变量(Split Temporary Variable)
7,移除对参数的赋值(Remove Assignments to Parameters)
8,以函数对象取代函数(Replace Method with Method Object)
     有时重构函数因为临时变量太多,不能抽出函数方法。这里把这个函数写到类中,把临时变量写成类属性。再抽出函数放到此类中,共用类属性就方便多了。
9,替换算法(Substitute Algorithm)

第7章,对象之间搬移特性,8点
1,搬移对象(Move Method)
2,搬移字段(Move Field)也叫搬移属性变量
3,提炼类(Extract Class)
4,将类内联化(Inline Class)就是将类合并,一个类要足以承担一个抽象任务。
5,隐藏“委托关系”(Hide Delegate)
6,Remove Middle Man 移除中间人,移除中间过简点的类层
7,Introduce Foreign Method 引入外加函数
8,Introduce Local Extension 引入本地扩展
http://blog.csdn.net/tanxiang21/article/details/28389375
http://www.cnblogs.com/baochuan/archive/2012/04/01/2427199.html

第8章,重新组织数据,16点
http://blog.csdn.net/tanxiang21/article/details/28389617
http://blog.csdn.net/hguisu/article/details/7602925
1,Self Encapsulate Field 自封装字段,p171
2,以对象取代数据值(Replace Data Value with Object), p175
3,Change Value to Reference 将值对象改为引用对象, p179
4,Change Reference to Value 将引用对象改为值对象, p183
5,Replace Array with Object 以对象取代数组, p186
6,Duplicate Observed Data 复制“被监视数据”
7,Change Unidirectional Association to Bidirectional 将单向关联改为双向关联
8,Change Bidirectional Association to Unidirectional 将双向关联改为单向关联
9,Replace Magic Number with Symbolic Constant 以字面常量取代魔法数
10,Encapsulate Field 封装字段
11,Encapsulate Collection 封装集合
12,Replace Record with Data Class 以数据类取代记录
13,Replace Type Code with Class 以类取代类型码
14,Replace Type Code with SubClasses 以子类取代类型码
15,Replace Type Code with State/Strategy 以策略模式取代类型码
16,Replace SubClass with Fields 以字段取代子类

第9章,简化条件表达式,8点
http://blog.csdn.net/hguisu/article/details/7613766
1,Decompose Conditional 分解条件表达式, p238
2,Consolidate Conditional Expression 合并条件表达式
3,Consolodate Duplicate Conditional Fragments 合并重复的条件片段
4,Remove Control Flag 移除控制标记
5,Replace Nested Conditional with Guard Clauses 以卫语句取代嵌套条件表达式
6,Replace Conditional with Polymorphism 以多态取代条件表达式
7,Introduce Null Object 引入Null对象
8,Introduce Assertion 引入断言

第10章,简化函数调用,15点
1,Rename Method 函数改名, p273
2,Add Parameter 添加参数, p275
3,Remove Parameter 移除参数
4,Separate Query from Modifier 将查询函数和修改函数分类
5,Parameterize Method 令函数带参数
6,Replace Parameter with Explicit Methods 以明确函数取代参数
7,Preserve Whole Object 保持对象完整
8,Replace Parameter with Methods 以函数取代参数
9,Introduce Parameter Object 引入参数对象
10,Remove Setting Method 移除设置函数
11,Hide Method 隐藏函数
12,Replace Constructor with Factory Method 以工厂函数取代构造函数
13,Encapsulate Downcast 封装向下转型
14,Replace Error Code with Exception 以异常取代错误码
15,Replace Exception with Test 以测试取代异常, p315

第11章,处理概括关系,12点
1,Pull Up Field 字段上移, p320
2,Pull Up Method 函数上移
3,Pull Up Constructor Body 构造函数本体上移
4,Push Down Method 函数下移
5,Push Down Field 字段下移
6,Extract Subclass 提炼子类
7,Extract Superclass 提炼超类
8,Extract Interface 提炼接口
9,Collapse Hiberarch 折叠继承体系
10,Form TemPlate Method 塑造模板函数
11,Replace Inheritance with Delegation 以委托取代继承
12,Replace Delegation with Inheritance 以继承取代委托

第12章,大型重构,4点
1,Tease Apart Inheritance 梳理并分解继承体系
2,ConvertProcedural Design to Objects 将过程化设计转化为对象设计
3,Separate Domain from Presentation 将领域和表述/显示分离
4,Extract Hierarchy 提炼继承体系

0 0
原创粉丝点击