Notes

A collection of short notes on reading, design principles, and things learned while building.

Clean Architecture 達人に学ぶソフトウェアの構造と設計

Clean Architecture 達人に学ぶソフトウェアの構造と設計

同じ理由、同じタイミングで変更されるクラスをコンポーネントにまとめること。変更の理由やタイミングが異なるクラスは、別のコンポーネントに分けること。

  • 単一責任の原則(SRP)をコンポーネント向けに言い換えたもの。
  • 変更の理由が異なるクラスは別のコンポーネントに分けるという原則
  • コンポーネントを変更する理由が複数あるべきではない。
  • アプリケーションのコードを変更しなければいけないときには、ひとつのコンポーネントに変更箇所がまとまっているほうが、あちこちのコンポーネントに散らばっているよりもありがたい。
  • 変更箇所がひとつのコンポーネントに閉じていれば、変更後にデプロイする必要があるのはそのコンポーネントだけになる。
  • 同じタイミングで変更されることが多いクラスはひとつにまとめておけ。
  • 2つのクラスが物理的あるいは概念的に密結合していて、変更のタイミングいつも一緒になるのであれば、それは同じコンポーネントに属するもの。
  • 変更の種類が似ているクラスをひとつのコンポーネントにまとめる。

同じタイミング、同じ理由で変更するものはひとまとめにすること。変更のタイミングや異なるものは別々に分けること。


Clean Architecture 達人に学ぶソフトウェアの構造と設計

Clean Architecture 達人に学ぶソフトウェアの構造と設計

コンポーネントのユーザーに対して、実際に使わないものへの依存を強要してはいけない。

  • ひとつのコンポーネントにまとめるべきクラスやモジュールを判断するための原則。
  • 一緒に用いられることが多いクラスやモジュールは同じコンポーネントにまとめよ。
  • ひとつのコンポーネントにまとめるクラスはどれも切り反せないものばかりにしておきたい。
  • どのクラスをひとまとめにするべきかというよりも、どのクラスをひとまとめにすべきでないかを伝える原則。
  • 密結合していないクラスを同じコンポーネントにまとめるべきではない。
  • 全再利用の原則(CRP)はインターフェーイス分離の原則(ISP)を一般化したもの。
  • 使っていないクラスを持つコンポーネントに依存しないように。

不要なものには依存しないこと。


Clean Architecture 達人に学ぶソフトウェアの構造と設計

Clean Architecture 達人に学ぶソフトウェアの構造と設計

再利用の単位とリリースの単位は等価になる。

  • コンポーネントを形成するクラスやモジュールは凝集性のあるグループでなければいけない。
  • コンポーネントはクラスやモジュールを適当に寄せ集めたものではない。
  • コンポーネントには一貫するテーマや目的があり、それを共有するモジュールを集めなければいけない。
  • ひとつのコンポーネントを形成するクラスやモジュールは、まとめてリリース可能でなければいけない。

Amazon アソシエイトについて

この記事には Amazon アソシエイトのリンクが含まれています。Amazonのアソシエイトとして、SuzumiyaAoba は適格販売により収入を得ています。