人柄は良いがビギナーレベル

育児とプログラミングに追われる毎日

Clean Architecture 第8章 OCP:オープン・クローズドの原則

この記事について

覚え書き

言い換えれば、ソフトウェアの振る舞いは、既存の成果物を変更せず拡張できるようにすべきである、ということだ。

アーキテクチャは、いつどのような理由でどのように変更するかを考えて機能を分割する。そして、分割した機能をコンポーネントの階層構造にまとめる。上位レベルにあるコンポーネントは、下位レベルのコンポーネントが変更されたとしても、変更する必要はない。

  1. SRP:単一責任の原則により機能を変更する理由を一つのアクターに対する責務に限定することで変更機能を最小限にとどめる
  2. 機能の中身を役割ごとにコンポーネントを分ける
  3. コンポーネントDIP:依存関係逆転の原則を利用してビジネスロジックが詳細の処理(ControllerやPresenter、Database)に影響されないようにする
    1. 詳細の処理がビジネスロジックに対して依存する=変更した時に変更したくないものに依存する(依存されたコンポーネントは変更の影響を受けない)
    2. 詳細の処理がビジネスロジックに対して依存するのはビジネスロジックインターフェイス
    3. インターフェイスに依存することでビジネスロジックを変更したときに詳細の処理に変更が発生しないようにする

まとめ

  • SRP:単一責任の原則により仕様変更が発生しても一つの機能にしか影響が出ないようにした上で、DIP:依存関係逆転の原則により実装の変更が発生しても他のコンポーネントに影響が出ないようにするからこそOCP:オープン・クローズドの原則を実践できるのかなと感じた