zoukankan      html  css  js  c++  java
  • 【重构.改善既有代码的设计】3、代码的坏味道

    3、代码的坏味道

    由于好多都太简单了,而且后面讲重构方法的时候,还会讲到,这里就只列名字了。

     

    Duplicated Code(重复的代码)

     

    Long Method(过长函数)

     

    Large Class(过大类)

     

    Long Parameter List(过长参数列)

     

    Divergent Change(发散式变化)

    不同的原因导致同一个类发生变化。

     

    Shotgun Surgery(散弹式修改)

    某一种变化需要修改很多个类。

     

    Feature Envy(依恋情结)

    函数对某个class的兴趣高过对自己所处之host class的兴趣。

     

    Data Clumps(数据泥团)

    多个参数总是一起出现。

     

    Primitive Obsession(基本型别偏执)

    对象的扩展性要好的多。

     

    Switch Statements(switch惊悚现身)

    长代码的源泉。

     

    Parallel Inheritance Hierarchies(平行继承体系)

    Parallel Inheritance Hierarchies其实是shotgun surgery的特殊情况。在这种情况下,每当你为某个class增加一个subclass,必须也为另一个class相应增加一个subclass。如果你发现某个继承体系的名称前缀和另一个继承体系的名称前缀完全相同,便是闻到了这种坏味道。

    消除这种重复性的一般策略是:让一个继承体系的实体(instance)指涉(参考、引用、refer to)另一个继承体系的实体(instances)。如果再接再厉运用Move Method 和 Move Field,就可以将指涉端( referring class )的继承体系消弭于无形。

     

    Lazy Class(冗赘类)

    可以删掉的类

     

    Speculative Generality(夸夸其谈未来性)

    不要为未来过度设计

     

    Temporary Field(令人迷惑的暂时值域)

    已经丧失了历史意义。

     

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

    中间人是否过多,这个要确定,所以这里强调的是过度。

     

    Middle Man(中间转手人)

    同上,有时候需要加上合适的中间人

     

    Inappropriate Intimacy(狎昵关系)

    两个类过分亲密,互相调用太过频繁,需要相互调换一些元素,或者提取一个新的类、亦或是合并。

     

    Alternative Classes with Different Interfaces(异曲同工的类)

     

    Incomplete Library Class(不完美的程序库类)

    如果你只想修改library classes内的一两 个函数,可以运用 Introduce Foreign Method; 
    如果想要添加一大堆额外行为,就得运用Introduce Local Extension。

     

    Data Class(纯稚的数据类)

    作者认为这种只包含数据的类,会被别的类过度简单的调用,这些类应该具有一些数据加工能力。

     

    Refused Bequest(被拒绝的遗贈)

    如果子类不希望提供父类的公共接口,请用聚合。

     

    Comments(过多的注释)

    当代码中有大量注释的时候,表示这块代码的自注释能力太弱了,需要重构了。

  • 相关阅读:
    jzoj3294. 【SHTSC2013】超级跳马
    jzoj3243. Cube
    jzoj3242. Spacing
    jzoj3232. 【佛山市选2013】排列
    jzoj3297. 【SDOI2013】逃考
    jzoj4800. 【GDOI2017模拟9.24】周末晚会
    学习burnside、polya小结
    学习splay或spaly小结
    一个初学者的辛酸路程-了解Python-2
    一个初学者的辛酸路程-初识Python-1
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/10388576.html
Copyright © 2011-2022 走看看