単一責任の原則
from Clean Architecture 達人に学ぶソフトウェアの構造と設計
モジュールはたったひとつのアクター(アーキテクチャ)に対して責務を負うべきである。
モジュールはいくつかの関数やデータをまとめた凝集性のあるもの
単一責任の原則(SRP)は、アクターの異なるコードは分割すべきという原則
例えば人事部門向けに提供された社員の所定労働時間を計算するプログラムがあり、経理部門向けに提供された社員の月給を計算するプログラムがある。月給の計算をするプログラムにも所定労働時間を計算するロジックが含まれている。開発者はこの二つのプログラムに共有部分があると気付き、所定労働時間計算ロジックを共通のコードに切り出し、人事部門と経理部門のロジックがそれに依存するようにした。数年後、労働時間の計算方法が変わったため人事部門から改修するよう依頼された。開発担当者は人事部門のロジックと所定労働時間を計算するロジックの存在を確認したが、経理部門のロジックが所定労働時間を計算するロジックに依存していることに気付かなかった。最終的にロジックの改修によって経理部門が望まない状況で給与の金額が変動してしまった。
単一責任の原則(SRP)は関数やクラスに関する原則だが、同じような原則が別のレベルでも登場する
コンポーネントレベルでは、この原則は「閉鎖性共通の原則(CCP)」と呼ばれる
アーキテクチャレベルでは、「アーキテクチャの境界」を作るための「変更の軸」と呼ばれる