哪些需要重构?

来源:互联网 发布:然足下卜之鬼乎的句式 编辑:程序博客网 时间:2024/04/26 07:27

近期再度《重构》,有感而记:

 

Bad smells in Code(不好的代码):
1.Duplicated Code(重复的代码),同一份代码出现在一次以上;
2.Long Method(过长代码),一个函数太长,功能包罗万象;
3.Large Class(过大类),一个类的功能太多,导致有很多的实例变量;
4.Long ParameterList(过长参数列遇到多种变化,都是在某个类中做出变化;
6.Shotgun Surgery(霰xion弹式变化),和5刚好相反,遇到某种变化,都必须在许多不同的类内做出许多变化;
7.Feature Envy(依恋情节)某个类中的某个函数提供功能依赖的数据,依赖的方法都来自另一个类
8.Data Clumps(数据泥团),好几个数据项总是一起出现在很多地方,可以将这几个数据项提炼到一个独立的对象中;
9.Primitive Obsession(基本型别偏执),喜欢使用基本类型数据,而不用自定义类型,如:函数形参有好多个基本类型数据时,可以把这几个基本类型数据组合为一个自定义数据类型;
10.Switch Statement(switch语句),面向对象编程的一个最明显的特征就是:少用switch或case语言,从本质上说,switch语句的问题在与重复,同样的switch语句散布于不同地方,修改一个case,就要修改很多地方;
11.Parallel Inheritance Hierarcies(平行继承体系):每当为某个class增加一个subclass,必须也为另一个class相应的增加一个subclass
12.Lazy Class(冗余类);如果某个class的所得不值其身价,它就应该消失。
13.Speculative Generality(夸夸其谈未来性);如果所有装置都会被用到,那就值得那么做;如果用不到,就不值得。用不上的装置只会当你的路,所以,搬开他吧。
14.Temporary Field(令人迷惑的暂时值域):某个类的某个instance变量仅为某种特定情势而设,这样的代码让人不易理解,因为通常认为对象在所有时候都需要他的所有变量;
15.Message Chains(过度耦合的消息链);用户想一个对象索求另一个对象,然后再向后者索求另一个对象,然后再索求另一对象……;
16.Middle Man(中间转手人),对象的基本特征之一就是封装,封装往往伴随委托,如果某个class接口有很多的函数都委托其他class,这样就是过度运用;
17.Inappropriate Intimacy(过度亲密),类与类之间过度亲密;
18.Alternative Classer with Different Interfaces(异曲同工的类),如果两个函数做同一件事,却有着不同的签名式;
19.Incomplete Library Class(不完美的程序库类)
20.Data Class(纯数据类)
21.Refused Bequest(被拒绝的遗赠),子类不想或不需要父类的函数或数据
22.Comments(过多的注释)

 

这些需要重构的情况,占据了多少?

汗……,可能是因为项目时间紧,很多地方都没有注意到

 

原创粉丝点击