全栈工程师互联网科技程序员

代码异味 (Code smells)

2017-07-28  本文已影响949人  andyJi

如果一段代码是不稳定或者有一些潜在问题的,那么代码往往会包含一些明显的痕迹。

正如食物要腐坏之前,经常会发出一些异味一样。

我们管这些痕迹叫做 代码异味

No.1 重复代码 (Duplicated Code)

解决方案:

No.2 过长方法 (Long Method)

所谓 “ 好处 ”

解决方案:

No.3 过大类 (Large Class)

解决方案:

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

会导致哪些问题

解决方案:

No.5 发散式变化 (Divergent Change)

表现:一个类受到多种变化的影响

解决方案:

No.6 散弹式修改 (Shotgun Surgery)

表现:一种变化引发多个类相应修改

解决方案:

No.7 依恋情节 (Feature Envy)

表现:使用了大量其他类的成员

解决方案:

No.8 数据泥团 (Data Clumps)

表现:常一起出现的一堆数据

解决方案:

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

解决方案:

No.10 switch惊悚现身 (Switch Statements)

解决方案:

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

表现:每当你为某个class增加一个subclass,必须也为另一个class相应增加一个subclass

解决方案:

No.12 冗余类 (Lazy Class

解决方案:

No.13 夸夸其谈未来 (Speculative Generality)

解决方案:

No.14 临时字段 (Temporary Field)

解决方案:

No.15 过度耦合的消息链 (Message Chains)

表现:用户向一个对象索求另一个对象,然后再向后者索求另一个对象,然后再索求另一个对象……这就是Message Chain

解决方案:

No.16 中间转手人 (Middle Man)

表现:某个类接口有一半的方法都委托给其它类

实质:委托的过度使用

解决方案:

No.17 太亲密 (Inappropriate Intimacy)

表现:两个类彼此使用对方私有的成员或方法

解决方案:

No.18 不同接口的相似类 (Alternative Classes with Different Interfaces)

解决方案:

No.19 不完善的类库 (Incomplete Library Class)

解决方案:

No.20 纯稚的数据类 (Data Class)

解决方案:

No.21 被拒绝的遗赠 (Refused Bequest)

表现:父类里面方法很多,子类只用有限几个

实质:继承体系设计错误

解决方案:

No.22 过多注释 (Comments)

解决方案:

参考资料

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

https://sourcemaking.com/refactoring/smells

http://blog.csdn.net/sulliy/article/details/6635596

http://blog.csdn.net/windcao/article/details/25773219

上一篇下一篇

猜你喜欢

热点阅读