代码的坏味道

1. Duplicated Code(重复代码)

2. Long Method (过长函数)

     包含太多信息,这些信息又被函数错综复杂的逻辑掩盖,不易鉴别。

   如何确定该提炼哪一段代码呢?一个很好的技巧是:寻找注释。它们通常能指出代码用途和实现手法之间的语义距离。如果代码前方有一行注释,就是在提醒你:可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。就算只有一行代码,如果需要以注释来说明,那也值得将它提炼到独立函数去。

3. Large Class(过大的类)

4. Long Parameter List(过长参数列)

5. Divergent Change(发散式变化)

针对某一外界变化的所有相应修改,都只应该发生在单一类中,而这个新类内的所有内容都应该反应此变化。为此,你应该找出某特定原因而造成的所有变化,然后运用Extract Class 将它们提炼到另一个类中。

6. Shotgun Surgery(霰弹式修改)

Shotgun Surgery 与Divergent Change恰恰相反。如果每遇到某种变化,你都必须在许多不同的类内做出许多小修改,你所面临的坏味道就是Shotgun Surgery。这种情况下你应该使用Move Method 和Move Field 把所有需要修改的代码放进同一个类。如果眼下没有合适的类可以安置这些代码,就创造一个。通常可以运用Inline Class把一系列相关行为放进同一个类。这可能会造成少量Divergent Change,但你可以轻易处理她。

7. Feature Envy (依恋情结)

8. Data Clumps(数据泥团)

  缩短参数列,简化函数调用。一个好的评判办法是:删掉众多数据中的一项。这么做,其他数据有没有因而失去意义?如果它们不再有意义,这就是个明确信号:你应该为它们产生一个新对象。

9. Primitive Obsession(基本类型偏执)

10. Switch Statements(switch 惊悚现身)

11. Parallel Inheritance Hierarchies (平行继承体系)

Parallel Inheritance Hierarchies 其实是Shotgun Surgery 的特殊情况。在这种情况下,每当你为某个类增加一个子类,必须也为另一个类相应增加一个子类。如果你发现某个继承体系的类名称前缀和另一个继承体系的类名称前缀完全相同,便是问到了这种坏味道。

消除这种重复性的一般策略是:然一个集成体系的实例引用另一个继承体系的实例。

12. Lazy Class (冗赘类)

13 Speculative Generality(夸夸其谈未来性)

14 Temporary Field (令人迷惑的暂时字段)

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 (过多的注释)

转载于:https://my.oschina.net/u/134516/blog/127212

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值