Skip to content

霰弹式修改 (Shotgun Surgery)

ID: shotgun_surgery | 严重程度: 中 (默认)

当需求的一个变化迫使您在许多不同的模块中进行许多小的更改时,就会发生霰弹式修改。archlint 通过分析 git 历史记录来检测频繁一起更改的文件(高共变频率)。

为什么这是一种坏味道

  • 高维护成本:每个功能或错误修复都需要触及系统的多个部分。
  • 容易出错:很容易遗漏许多必需更改中的一个,导致错误。
  • 封装不佳:这表明单一职责在代码库中被分散,而不是封装在一个地方。

如何修复

  • 整合职责:使用 Move MethodMove Field 将相关逻辑合并到一个模块中。
  • 引入参数对象 (Introduce Parameter Object):如果多个模块需要相同的数据集,将其分组为单个对象。
  • 用对象替换数据值 (Replace Data Value with Object):如果许多模块处理相同的原始数据,将该数据及其行为封装到一个新类中。

配置

yaml
rules:
  shotgun_surgery:
    severity: medium

Released under the MIT License.