重构-改善既有代码的设计(代码的坏味道)

代码的坏味道:
1.duplicated code(重复代码)
2.long method(过长函数)
3.long parameter list (过长参数列)
4.large class (过于复杂的类)
5.divergent change (分散式变化)
reference:某个类因为不同原因在不同方向上发生变化。这是你应该把该类分离成若干个类。
6.shotgun surgery (散弹式修改)
reference:和 divergen change 有点相似,但又恰恰相反。如果是因为一个原因,你需要在不同类中做出修改。
这时候你应该用move method 以及 move field 到同一个类中。

divergen change 是指“一个类受多种变化的影响” ,shotgun surgery 是指“一个变化受多个类的相应修改”。这两种情况,你都需要对类进行修改,
使 "外界变化" 与 “需要修改的类” 趋于一一对应。
7.feature envy (依赖情节)
reference:函数对某个类的兴趣高过于自己所处的类。
这是时候你应该把这个函数move method到理想的地方去。
如果这个函数只是部分依赖某类,你应该先extract method ,在move method带他进入适当的位置。
8.data clump (数据泥团)
reference:两个类中相同的字段、许多函数签名具有相同的的参数。这些总绑在一起的数据应该有自己的类。(DAO Query对象)
9.primitive obsession (基本类型偏执)
reference:我往往不愿意为 小任务 创建一个小对象,或者有时候我们可以 replace data valule with object,extract class.
10.switch statements (swtich 惊悚现身)
reference:在大多数用switch语句情况下,我们可以运用 replace type code with subclass。
11.paralle inheritance hierarchies (平行继承体系)
reference:当你为某个类增加子类时,必须为另一个类增加相同子类。
消除这种重复性的一般策略是:让一个继承体系实例引用另一个集成体系的实例,在运用move method 和move field。
12.lazy class (冗赘类)
reference:如果函数或者类的唯一用户只是测试,那么你的代码就有 speculative generality 的味道。
13.speculative generality(夸大代码未来性)
14.temporary field (临时字段)
reference:某些字段只是在某些算法时才有效,其他时候会让人迷惑。这时候你可以用extract class 将相关字段和函数放到一个独立类中去。
提炼后的对象是函数对象。
15.message chains (消息链)

16.middle man (中间人)
17.inappropriate intimacy (狎昵关系)
18.alternative classes with different interfaces (异曲同工的类)
19.incomplete library class(不完美的库类)
20.data class (幼稚的数据类)
21.refused bequest(被拒绝的遗赠)
22.comments(过多的注释)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值