SOLID Principles Demystified — (S)

Apr 17 2023
単一責任の原則
クラスは 1 つの目的のみを担当する必要があります。つまり、クラスが実行するジョブのタイプは 1 つだけである必要があります (データベース ロジック、ログ ロジックなど)。サンプル シナリオ すべての形状 (円、正方形、三角形など) の面積の合計を計算するアプリケーションを考えてみましょう。

クラスは 1 つの目的のみを担当する必要があります。つまり、クラスが実行するジョブのタイプは 1 つだけである必要があります (データベース ロジック、ログ ロジックなど)。

サンプルシナリオ

特定の配列内のすべての形状 (円、正方形、三角形など) の面積の合計を計算し、必要な形式で結果を出力するアプリケーションを考えてみましょう。

下手な書き方

クラスAreaCalculatorでは、提供された形状の面積の合計を計算するだけでなく、JSON 形式でデータを出力します。出力を CSV、HTML などの別の形式に変換する必要があるシナリオを考えてみましょう。

このコードは機能的には正しいですが、単一責任の原則に違反しています。AreaCalculatorクラスは提供された形状の面積の合計のみを計算する必要があります。JSON やその他の形式でのデータの表示には関係ありません。

よく書かれました

この違反を修正するには、別のクラスを作成して、 AreaCalculatorクラスからのデータの出力を処理する必要があります。この新しいクラスAreaCalculatorDisplay は、任意の形式でデータを出力するロジックを処理します。

主な利点

  1. テスト— 責任が 1 つのクラスでは、テスト ケースがはるかに少なくなります。
  2. 低結合— 単一クラスの機能が少ないほど、依存関係が少なくなります。
  3. 組織— 小さくてよく組織されたクラスは、モノリシックなクラスよりも検索が容易です。