重构-改善既有代码的设计-代码的坏味道

梦想游戏人
目录:
读书笔记

代码坏的味道:(以下这些现象意味着你该重构了)

1.Duplicated Code(重复代码)(提炼出公共代码)

2.Long Method(函数过长)

3.Large Class(过大的类)

4.Long Parameter List(过长的参数列表)(可通过ADT来简化参数)

5.Divergent Change(发散式变化)没有该味道的代码应该是这样(一旦需要修改,我们希望跳到系统的某一点,只在该处修改)

6.Shotgun Surgery(散弹式修改)(遇到某种变化时,你都必须在许多不同的类内做出许多小修改,要修改的代码遍布四处)

7.Feture Envy(依恋情节)(如果某个函数为了计算某个值,从另外一个对象调用了几乎半打的取值函数,那么就该考虑吧这个函数移到另外一个地方了。此类问题还有很多例子)

8.Data Clumps(数据泥团)(2个类中有系统的字段,许多函数相同时,那么就该考虑提炼出类了,把数据的注意力转向函数)

9.Primitive Obsession(基本类型的偏执)(有时候基本数据类型比ADT更实用)

10.Switch Statements(面向对象语言明显特征就是 尽量用要用多态来替代switch case)

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

12.Lazy Class(冗余类)(如果一个类没多少价值,请去掉吧)

13.Speculative Generality(夸夸其谈未来性)如果企图各种各样的手法,来处理一些非必要的事情(未来需要用这个东西),那么结果往往造成系统更难维护和理解,慎重考虑

14.Temporary Field(暂时字段)(如果类中某个变量只是为了某种特殊情况而设,这样的代码不易理解,因为通常认为在类中的变量 所有对象都要需要,请提炼出来)

15.Message Chains(过度耦合的消息链)(如果看到一个对象请求另外一个对象然后在请求另外一个对象,你可能会见到getThis 或者一长串的临时变量,这种意味着结构紧密耦合,一旦对象间发生变化,那么客户端就不得不变化了。。。解决办法:先观察消息链最终是干嘛,看看能否提炼出独立的函数  等等)

16.Middle Man(中间人的过度使用)(如果某个类的接口有一般函数都 在委托其他类,那么久应该移除这个类了, 或者变成子对象 )

17.Inappropriate Intimacy(不恰当的亲密关系)(如果2个类关系太紧密,请慎重考虑这2个类的关系)

18.Alternative Class With Different Interfaces(异曲同工的类)(如果2个类 或者函数的行为差不多,那么可以考虑提炼,去掉冗余代码)

19.Data Class(纯粹的数据类)(让他多做点事吧)

20.Refuse Bequest(被拒绝的遗赠)(在继承体系中,如果子类只具备父类部分特性,或者部分函数,那意味着这个继承体系是错误的,特别是 抽象超类)

Scroll Up