コンテンツにスキップ

オブジェクト指向の原則 単一責任の原則

SRP : Single Responsibility Principle - クラスの責務は1つにする - クラスを変更する理由は、1つ以上存在してはならない

NGな例

受注画面クラス - 受注データ入力 - 受注の保存 - 受注メール送信

発注画面クラス - 発注データ入力 - 発注の保存 - 発注メール送信

ここで、メール送信の仕様に変更があった場合

NGな実装の問題点

  • 問題点1 : 画面クラスに色々な責務を持たせているため、様々な理由で変更する必要が出てしまう
  • 問題点2 : 同じ修正を別々の画面クラスごとに修正しなくてはならない

ロジックを単一クラスに切り出しておけば、以下のメリットがある - 修正箇所を最小にできる - 修正する場所が明確になる

巨大クラス(単一責務になっていない実装)の問題点

  • 修正箇所を探すのに時間が掛かる
  • 他に影響がないことを確認する時間(テスト)が増える

クラスは機能ごとに小さく作る

多数の小さなクラスを作り、クラスを部品として利用することで機能を実現する

修正がクラス単位になるので、プルリクのレビューも分かりやすくなる

Reference