Skip to content

上帝模块

ID: god_module | 严重程度: 高 (默认)

"上帝模块"(God Module)是指一个变得过于庞大且承担了过多职责的文件。

为什么这是一种坏味道

  • 违反单一职责原则:该模块做了太多的事情。
  • 合并冲突:不同开发人员的频繁更改会导致不断的冲突。
  • 脆弱性:模块某一部分的更改可能会意外地破坏另一部分。
  • 难以测试:需要复杂的设置来测试各种不相关的逻辑。

检测标准

archlint 根据以下指标识别上帝模块:

  • Fan-in(扇入):依赖于它的其他模块的数量。
  • Fan-out(扇出):它所依赖的模块的数量。
  • Churn(变更频率):在 git 中的更改频率。
  • Lines of Code(代码行数):文件的总大小。

如何修复

  1. 识别职责:列出模块执行的所有不同任务。
  2. 提取模块:将文件拆分为更小、更集中的模块。
  3. 外观模式(Facade Pattern):如果该模块充当协调器,请仅保留协调逻辑,并将具体工作委托给子模块。

配置

yaml
rules:
  god_module:
    severity: high
    fan_in: 15
    fan_out: 15
    churn: 20

ESLint 规则

此检测器可作为 ESLint 规则使用,以便在编辑器中获得实时反馈。

javascript
// eslint.config.js
export default [
  {
    rules: {
      '@archlinter/no-god-modules': 'warn',
    },
  },
];

详见 ESLint 集成 了解设置说明。

Released under the MIT License.