查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!

    

代码重构-寻觅坏道味

本文参考了一下书籍:

《重构-善改既有代码的计划》

《重构手册》

 

1. 重复的代码

    

    

a) 封装成类,应用组合方法。

    

b) 封装成方法,通常是在统一类中。

    

c) 数参少的方法用调数参多的代码,并予赋默认值。

    

d) 提取大众基类,把同共的代码放到父类。

    

    

2. 长过

    

    

a) 方法

    

    

    

    

i. 提取子方法。

    

    

    

ii. 动移这个方法动作外的函数到表面。

    

    

    

    

b) 类

    

    

    

    

i. 提取类(一同化变的,逻辑上有依附的量变封装在一同)

    

    

    

ii. 虑考move method来搬移不属于该类的方法。

    

    

    

    

c) 数参列

    

    

    

    

i. 封装成一个代表数参的象对。

    

    

    

ii. 传递这个数参象对取代长过的数参序列。

    

    

    

3. 名不达意

    

    

a) 类名

    

    

    

    

i. Rename 类名。

    

    

    

ii. 封装提取其他类。

    

    

    

iii. Move method

    

    

    

    

b) 方法名

    

    

    

    

i. Rename method name

    

    

    

ii. 封装提取方法。

    

    

    

iii. 搬移方法。

    

    

    

    

c) 量变名

    

    

    

    

i. Rename 

    

    

    

4. 多过的Null检查

    

    每日一道理
这浓浓的母爱使我深深地认识到:即使你是一只矫健的雄鹰,也永远飞不出母爱的长空;即使你是一条扬帆行驶的快船,也永远驶不出母爱的长河!在人生的路上不管我们已走多过远,还要走多远,我们都要经过母亲精心营造的那座桥!

    

a) 应用Null Object模式。

    

    

5. 多重责职

    

    

a) 类

    

    

    

    

i. 拆分类

    

    

    

    

b) 方法

    

    

    

    

i. 拆分方法

    

    

    

    

c) 接口

    

    

    

    

i. 拆分接口

    

    

    

    

d) 量变

    

    

6. 释注

    

    

a) 提取封装方法

    

b) 给方法供提一个表意的名字。

    

c) 给触及到得量变供提一个表意的名字。

    

    

7. 方法中颗粒失衡

    

    

a) 方法中有很粗的方法用调,又有很细粒度的细节操纵。

    

b) 应当为细粒度的细节操纵封装成方法,以供用调。

    

    8. 不一致的化变:某个类因为不同的原因在不同的方向上发生化变。

    

    

a) 拆分类。

    

    

9. 散弹式修改:一个化变,多处修改。

    

    

a) 把同相依附的化变,封装到一个类里。

    

    

10. 恋依情结:函数对某个类的趣兴高过于其本身。

    

    

a) 搬移方法。

    

    

11. 庞杂的逻辑运算表达式

    

    

a) 提取方法。

    

b) 给一个适合的名字。

    

    

12. 数据泥团:多处函数引用类似的数参序列

    

    

a) 可以把相干数参提取封装类。

    

    

13. 暴漏多过的细节

    

    

a) 一个类中多过的public方法。

    

b) 在一个类里多过的操纵了另一个类。(应当把给另一个类建创一个方法,以供后面的类用调。)

    

    

14. 类子并非父类的一种况情:质本不同或类子不想具有父类的实现

    

    

a) 类子发生了变畸。

    

b) 应当应用组合的方法。

    

    

15. 逻辑与UI操纵混搭。

    

    

a) 把逻辑运算和UI操纵离分。

    

    

16. 基本类型偏执:类中有很多系关密紧的基本类型成员量变

    

    

a) 提取内部类。

    

    

17. 庞杂的switch 表达式。

    

    

a) 应用策略模式,状态模式善改。

    

文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”