代码坏味道
1、重复代码(Duplicated Code)
2、过长函数(Long Method)
3、过大的类(Large Class)
4、过长参数列表(Long Parameter List)
5、发散式变化(针对不断变化的需求不断修改的同一个类):针对某一外界变化的所有相应修改应该都只发生在单一类中。
6、霰弹(xian dan)式变化(Shotgun Surgery):每遇到某种变化,你都需要在许多不同的类内进行修改。
7、依恋情节(Feature Envy):某个函数为了计算某个值从另一个对象调用了几乎一半的函数。(一个函数往往会用到几个类的功能,那么如何判断该方法应该放在哪个类中呢?我们的原则是:判断哪个类拥有最多被此函数使用的数据,然后就把这个函数和那些数据摆在一起。)
8、数据泥团:两个类中有相同的字段、许多函数签名中有相同的参数。
9、基本类型偏执(Primitive Obsession): 建议使用对象类型,使用Integer而不是int。
10、Switch Statements:少用switch语句
11、平行继承体系(Parallel Inheritance Hierarchies):每当你为某个类增加一个子类,必须也为另一个类相应的增加一个子类。
12、冗赘(rongzhui)类(Lazy Class):如果一个类没有价值,就应该消失。
13、夸夸其谈未来性(Speculative Generality):以各种未来可能的需求或非必要的功能呢个为接口而添加毫无意义的代码
14、令人迷惑的暂时字段(Temporary Field):其内某个实例变量仅为某种特定情况而设定。
15、过度耦合的消息链(Message Chains):如果用户向一个对象请求另一个对象,然后在向后者请求另一对象,然后在请求另一个对象,这就是消息链。过深的调用层次或是过度的对象关系耦合。
16、中间人(Middle Man):
17、狎昵关系(Inappropriate Intimacy):两个类关系过于紧密:
18、异曲同工的类(Alertnative Classes with different interface):两个函数做同一件事却有不同的签名。
19、不完美的类库(Incomplete Libarary Class):类库无法被高效的重用;
20、纯稚的数据类(Data Class):它们拥有一些字段,以及用于访问(读写)这些字段的函数,除此之外一无长物。
21、被拒绝的遗赠(Refused Bequest):子类应该继承超类的函数和数据。
22、过多的注释(Comments)