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

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

Clean Architecture 第13章 コンポーネントの凝集性

この記事について

覚え書き

ひとつのコンポーネントを形成するクラスやモジュールは、まとめてリリース可能でなければいけない

同じバージョン番号を共有し、同じプロセスを経て、同じリリースドキュメントを持っていると言う事実は、作者にとってもユーザーにとっても合理的なはずだ。

  • 再利用・リリース等価の原則(REP)とは再利用されるコンポーネントの単位とリリースされるコンポーネントの単位を一致させること
    • 一致していると
      • ユーザーが変更内容を確認したうえで適用するか判断できるようになる
    • 一致していないと
      • 変更内容がわからない
      • 変更の適用の仕方がわからい

同じタイミングで変更されることが多いクラスは一つにまとめておけということだ。

まとめておけば、ソフトウェアのリリースやデプロイの際の作業量を最小限に抑えられる。

  • 閉塞性共通の原則(CCP)とは同じタイミング、同じ理由で変更するものはひとつのコンポーネントにまとめる

どのクラスをひとまとめにすべきではないかを伝える原則だ

密結合していないクラスを同じコンポーネントにまとめるべきではない

まとめ

  • 原則を守ることが大事ではなく、プロジェクトやコンポーネントの性質に合わせた取捨選択が大事
    • 再利用・リリース等価の原則(REP)を徹底すると
    • 閉塞性共通の原則(CCP)を徹底すると
    • 全再利用の原則(CRP)を徹底すると
  • 各原則の分割方法(プロジェクトが進むに連れてCCPからREPに移行する傾向がある)
    • 閉塞性共通の原則(CCP)→ 保守しやすい分割
    • 再利用・リリース等価の原則(REP)→ 再利用しやすい分割
    • 全再利用の原則(CRP)→ リリース作業を減らす分割