Skip to content

抽象度の違反 (Abstractness Violation)

ID: abstractness | 重要度: 低 (デフォルト)

このディテクターは、Robert C. Martin氏の「メインシーケンス(主系列)」メトリクスを使用して、モジュールの安定度(I)と抽象度(A)の関係を評価します。目標は、モジュールが「メインシーケンス」—安定度が増加するにつれて抽象度も増加する線—の近くにあることを確認することです。

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

  • 苦痛の地帯(Zone of Pain): 非常に安定している(多くのものがそれに依存している)が、非常に具体的(抽象がない)モジュール。これらは依存関係のために変更が極めて困難ですが、具体的な性質のため変更が必要になります。
  • 無用の地帯(Zone of Uselessness): 非常に抽象的(多くのインターフェース/抽象クラス)だが、非常に不安定(誰も依存していない)モジュール。これらは実際には使用されていない抽象を提供し、不必要な複雑さを追加します。

修正方法

  • 苦痛の地帯の場合: 抽象(インターフェース、抽象クラス)を導入して、モジュールの実装をユーザーから分離します。
  • 無用の地帯の場合: モジュールをより具体的にするか、未使用の抽象を削除してコードを簡素化することを検討してください。

設定

yaml
rules:
  abstractness:
    severity: medium

Released under the MIT License.