软件的坏味道

来源:互联网 发布:罗技在淘宝买怎么样 编辑:程序博客网 时间:2024/04/28 11:17

1) Duplicated Code(重复代码)

2) Long Method(过长函数)

3) Large Class(过大类)

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

5) Divergent Change(发散式变化)——过耦合

6) Shotgun Surgery(散弹式修改)——过度的分散与过耦合相反

7) Feature Envy(依恋情节)——函数对某个class的兴趣高过对自己所处的host class的兴趣。症状:某个函数为了计算某值,从另一个对象那调用机会半打的取值函数。疗法:把这个函数移动到另一个地点。

8) Data Clumps(数据泥团)——症状:总是绑在一起出现的数据,很多地方可以看到相同的三或四笔数据项:两个classes内的相同值域、许多函数签名式中的相同参数。疗法:把这些数据放进属于它们自己的对象中。

9) Primitive Obsession(基本型别偏执)——两种数据:结构型别和基本型别。充分利用“对象”的价值,它模糊了横亘于基本数据和体积较大的classes之间界限。例如以class表示字符串和日期。

10) SwitchStatements(switch惊悚现身)——面向对象程序的一个最明显特征就是:少用switch语句。多态的概念可以为此带来优雅的解决办法。

11) ParallelInheritance Hierarchies(平行继承体系)——每当为某个class增加一个subclass,必须也为另一个class相应增加一个subclass。

12) Lazy Class(冗赘类)——如果一个class的所得不值其身价,他就应该消失。

13)Speculative Generality(夸夸其谈未来性)——以为“总有一天需要做这事”并因而企图以各式各样的挂钩和特殊情况来处理一些非必要的事情。

14) TemporaryField(令人迷惑的暂时值域)——对象内某个instance变量仅为某种特定情势而设。

15) MessageChains(过度耦合的消息链)——用户向一个对象所求另一个对象,然后再向后者所求另一个对象,然后……这就是消息链。

16) Middle Man(中间转手人)——某个class接口有一般的函数都委托给其他class,这样就是过度运用。

17)Inappropriate Intimacy(狎昵关系)——两个类之间过分亲密

18)Alternative Classes with Different Interfaces(异曲同工的类)——两个函数做同样的事情,却有着不同的签名式。

19) IncompleteLibrary Class(不完美的程序库类)

20) Data Class(纯稚的数据类)——只含有一些值域以及访问值域的方法

21) RefusedBequest(被拒绝的遗赠)——子类应该集成弗雷的函数和数据。但如果他们不想或不需要继承。

22) Comments(过多的注释) 
原创粉丝点击