Skip to content

ゴッドモジュール

ID: god_module | 重要度: High (default)

「ゴッドモジュール」とは、ファイルが肥大化し、あまりにも多くの責任を負いすぎてしまった状態を指します。

なぜこれが「不吉な臭い」なのか

  • 単一責任の原則(SRP)への違反: モジュールが多すぎることを行っています。
  • マージ競合: 複数の開発者による頻繁な変更により、常に競合が発生します。
  • 脆弱性: モジュールの一部の変更が、予期せず別の部分を壊す可能性があります。
  • テストの難しさ: 無関係なさまざまな機能をテストするために、複雑なセットアップが必要になります。

検出基準

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 Integration を参照してください。

Released under the MIT License.