由于好多都太简单了,而且后面讲重构方法的时候,还会讲到,这里就只列名字了。
不同的原因导致同一个类发生变化。
某一种变化需要修改很多个类。
函数对某个class的兴趣高过对自己所处之host class的兴趣。
多个参数总是一起出现。
对象的扩展性要好的多。
长代码的源泉。
Parallel Inheritance Hierarchies其实是shotgun surgery的特殊情况。在这种情况下,每当你为某个class增加一个subclass,必须也为另一个class相应增加一个subclass。如果你发现某个继承体系的名称前缀和另一个继承体系的名称前缀完全相同,便是闻到了这种坏味道。
消除这种重复性的一般策略是:让一个继承体系的实体(instance)指涉(参考、引用、refer to)另一个继承体系的实体(instances)。如果再接再厉运用Move Method 和 Move Field,就可以将指涉端( referring class )的继承体系消弭于无形。
可以删掉的类
不要为未来过度设计
已经丧失了历史意义。
中间人是否过多,这个要确定,所以这里强调的是过度。
同上,有时候需要加上合适的中间人
两个类过分亲密,互相调用太过频繁,需要相互调换一些元素,或者提取一个新的类、亦或是合并。
如果你只想修改library classes内的一两 个函数,可以运用 Introduce Foreign Method;
如果想要添加一大堆额外行为,就得运用Introduce Local Extension。
作者认为这种只包含数据的类,会被别的类过度简单的调用,这些类应该具有一些数据加工能力。
如果子类不希望提供父类的公共接口,请用聚合。
当代码中有大量注释的时候,表示这块代码的自注释能力太弱了,需要重构了。
原文:https://www.cnblogs.com/aoyihuashao/p/10388576.html