发散式变化(Divergent Change)类似于霰弹式修改(Shotgun Surgery),但实际上完全不同。发散式变化(Divergent Change)在一个类中修改多处。霰弹式修改(Shotgun Surgery)指的是同时对多个类进行单一的修改。 特征 你发现你想要修改一个函数,却必须要同时修改许多不相关的函数。例如,当你想要添加一个新的产品类型时,你...
霰(xiàn)弹式修改意味着你的改动会造成大范围的影响,一处修改,到处修改。这句话也道出了重复代码的坏味道,所以想重复代码和重复Switch也都散发出了霰弹式修改的坏味道,这样的代码坏味道在代码中很常见,也较容易识别出来。 发散式变化,这个坏味道从字面上来看,是引起变化的原因很发散,就好比,我是一个初来乍到...
霰弹式修改坏味道: 遇到的每种变化都需要在许多不同类内做出小修改, 即要修改的代码散布于四处, 不但很难找到, 而且容易忘记重要的修改, 这种情况就是霰弹式修改; --注意霰弹式修改 与 发散式变化 区别: 发散式变化是在一个类受多种变化影响, 每种变化修改的方法不同, 霰弹式修改是一种变化引发修改多个类中...
Divergent Change(发散式变化) 指的是“某一个类受到多种变化的影响”,A/B/C/D……多种功能变化的时候它都需要修改。 病因大致是某个类负担了多项任务,太操心了。很可能需要再拆分几个类出来,把变化封装得更细。 以前我写代码的时候有一个例子,曾经有一段时间,P_Unit类处理所有BSC单元的逻辑,但各种单板的...
发散式变化 多个业务发生变化时,修改的都是同一个类,说明此类承担的职责过多,可以运用Extract Class(提炼类)根据业务提炼到不同的类中。 举个例子,比如一个电商系统,有一个商品类,商品类中有计算价格和查询库存等方法: 霰弹式修改 一旦有业务修改,需要修改程序的多处,这种坏味道可以用Move Method(搬移函数)和Mov...
发散式变化: --出现效果: 如果对程序进行例行维护的时候, 添加修改组件的时候, 要同时修改一个类中的多个方法, 那么这就是 Divergent Change; --修改方法: 找出造成发散变化的原因, 使用Extract Class(提炼类)将需要修改的方法集中到一个类中; 6. 霰弹式修改 (Shotgun Surgery) ...
发散式变化: --出现效果: 如果对程序进行例行维护的时候, 添加修改组件的时候, 要同时修改一个类中的多个方法, 那么这就是 Divergent Change; --修改方法: 找出造成发散变化的原因, 使用Extract Class(提炼类)将需要修改的方法集中到一个类中; 6. 霰弹式修改 (Shotgun Surgery) ...
发散式变化: --出现效果: 如果对程序进行例行维护的时候, 添加修改组件的时候, 要同时修改一个类中的多个方法, 那么这就是 Divergent Change; --修改方法: 找出造成发散变化的原因, 使用Extract Class(提炼类)将需要修改的方法集中到一个类中; 6. 霰弹式修改 (Shotgun Surgery) ...