上帝模块
ID: god_module | 严重程度: 高 (默认)
"上帝模块"(God Module)是指一个变得过于庞大且承担了过多职责的文件。
为什么这是一种坏味道
- 违反单一职责原则:该模块做了太多的事情。
- 合并冲突:不同开发人员的频繁更改会导致不断的冲突。
- 脆弱性:模块某一部分的更改可能会意外地破坏另一部分。
- 难以测试:需要复杂的设置来测试各种不相关的逻辑。
检测标准
archlint 根据以下指标识别上帝模块:
- Fan-in(扇入):依赖于它的其他模块的数量。
- Fan-out(扇出):它所依赖的模块的数量。
- Churn(变更频率):在 git 中的更改频率。
- Lines of Code(代码行数):文件的总大小。
如何修复
- 识别职责:列出模块执行的所有不同任务。
- 提取模块:将文件拆分为更小、更集中的模块。
- 外观模式(Facade Pattern):如果该模块充当协调器,请仅保留协调逻辑,并将具体工作委托给子模块。
配置
yaml
rules:
god_module:
severity: high
fan_in: 15
fan_out: 15
churn: 20ESLint 规则
此检测器可作为 ESLint 规则使用,以便在编辑器中获得实时反馈。
javascript
// eslint.config.js
export default [
{
rules: {
'@archlinter/no-god-modules': 'warn',
},
},
];详见 ESLint 集成 了解设置说明。