Shotgun Surgery[散弹式修改]
Shotgun Surgery类似Divergent Change, 但恰恰相反. 如果没遇到某种变化.你都必须再许多不同的类内做出许多小修改, 你所面临的坏味道就是Shotgun Surgery. 如果需要修改的代码散布四处,你不但很难找到它们,也很容易忘记修改某处重要的修改.
这种情况应该使用Move Method和Move Field把所需要修改的代码放进同一个类.如果眼下没有合适的类可以安置这些代码,就创造一个.通常可以运用Inline Class把一系列相关行为放进同一个类. 这可能造成少量Divergent Change, 但你可以轻易处理它.
Divergent Change是指"一个类受多种变化的影响", *Shotgun Surgery则是指"一种变化印发多个类相应修改". 这两种情况下你都会希望整理代码,使得"外界变化"与"需要修改的类"趋于一一对应.