🐷

コンポーネントの凝集性に関する原則 全再利用の原則とは?

2024/09/22に公開

背景

全再利用の原則は、コンポーネントの凝集性に関する原則です。この原則を守ることで、不要なデプロイを避けることが可能となります。

全再利用の原則とは?

私が読んだ書籍では、以下のように定義されていました。
「コンポーネントのユーザーに対して、実際には使わないものへの依存を強要してはいけない。」(ロバート・C・マーチン, 2018, 『Clean Architecture 達人に学ぶソフトウェアの構造と設計』, 翔泳社, p.140)

この原則は、使用されるクラスや機能だけを一つのコンポーネントにまとめ、使われないクラスや機能は別のコンポーネントに分けるべきというものです。これにより、無駄な依存関係が排除され、不要なデプロイを避けることが可能となります。

違反ケース

使われないクラスが含まれている場合

たとえば、コンポーネントAが「データ分析機能」を提供し、クラスAがデータ分析のロジックを担っているとします。一方で、コンポーネントBには「ログ管理機能」を提供しており、クラスBがログの保存を行います。しかし、コンポーネントB内に含まれているクラスCは、エラーログの特別な保存を担当しています。

ここで、コンポーネントAはデータ分析にログ管理を利用するため、コンポーネントBに依存していますが、実際にはクラスC(エラーログ管理機能)は使用しません。もし、クラスCに変更が入った場合、コンポーネントAがクラスCに依存していないにもかかわらず、依存している全体のコンポーネントBを再デプロイする必要が生じてしまいます。

このように、コンポーネントAが使わないクラスに間接的に依存してしまうことで、無駄なデプロイのコストが発生してしまいます。そのため、この原則に従った場合、クラスCは、別コンポーネントに分けるべきです。

まとめ

全再利用の原則は、コンポーネント設計において凝集性を考える際に重要な原則です。この原則を守ることで、無駄な依存を排除し、デプロイ作業をスムーズに進めることができます。

しかし、プロジェクトの状況によっては、開発初期でコンポーネントの再利用を考えなくてよいというケースもあるので、現在の状況にあった原則を適用することが大切だと思います。

Discussion