低凝集 (LCOM4)
ID: lcom | 重要度: Medium (default)
凝集度は、クラスのメソッドとフィールドがどの程度密接に関連しているかを測定します。archlint は LCOM4 (Lack of Cohesion of Methods) 指標を使用します。
なぜこれが「不吉な臭い」なのか
- SRPの違反: クラスが関連のない2つ以上のことを行っている可能性があります。
- 脆さ: クラスの一部分を変更すると、関連のない部分に影響を与える可能性があります。
- 再利用の困難さ: 関連のないロジックを取り込まずに、クラスの一部分だけを使用することができません。
修正方法
- Extract Class (クラスの抽出): クラスを2つ以上の小さなクラスに分割し、それぞれに単一の責任を持たせます。
- Move Method (メソッドの移動): クラスの状態を使用しないメソッドを、より適切な場所(ユーティリティモジュールなど)に移動します。
設定
yaml
rules:
lcom:
severity: medium
max_lcom: 4
min_methods: 3