ゴッドモジュール
ID: god_module | 重要度: High (default)
「ゴッドモジュール」とは、ファイルが肥大化し、あまりにも多くの責任を負いすぎてしまった状態を指します。
なぜこれが「不吉な臭い」なのか
- 単一責任の原則(SRP)への違反: モジュールが多すぎることを行っています。
- マージ競合: 複数の開発者による頻繁な変更により、常に競合が発生します。
- 脆弱性: モジュールの一部の変更が、予期せず別の部分を壊す可能性があります。
- テストの難しさ: 無関係なさまざまな機能をテストするために、複雑なセットアップが必要になります。
検出基準
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 Integration を参照してください。