📚

Single Responsibility Principle(単一責任の原則):関数の責任を絞る

2024/01/12に公開

Single Responsibility Principle(単一責任の原則)

「Single Responsibility Principle(単一責任の原則)」とは、各部分が一つの責任だけを持つべきだというソフトウェア設計の考え方です。

これは、関数設計においても適用でき、それぞれの関数が一つしかタスクを持たないような設計を心掛けた方が良いと言われています。

上司からのアドバイス

上司から「関数の責任は1つにした方が良い」とアドバイスを頂きました。

ずばり、ソフトウェア開発において非常に重要な「Single Responsibility Principle(単一責任の原則)」です。

実際のコードの例

1つのexample関数の中で引数のnullチェックと本来の処理のロジックを一緒に書いていました。

function example(args: string | null) {
  if (args === null) {
    return;
  }
  // 本来の処理を実行...
}

単一責任の原則の観点では、引数のnullチェックの役割が本来の関数そのものには含まれない方が良いと考えられます。

このexample関数で行われていることは、まずnullチェック、その後に本来の処理を行うという二重の責任があります。

これは単一責任の原則には反する設計です。

これを修正するためには、以下のような書き換えが考えられます。

function example(args: string) {
  // 本来の処理を実行...
}

const data: string | null = fetchData(); 
const result: string | null  = data ? example(data) : null;

この新しい設計では、nullチェックの責任が関数を呼び出す側に移され、example関数は本来の処理を行うだけの単一の責任を持つようになります。

これにより、各関数やオブジェクトが一つの役割、一つの責任を持つように設計が行われ、単一責任の原則に従った設計となります。

1つの関数に複数の処理を含めないようにすることを忘れないように、この記事に残しました。

Discussion