凝集度とは
「モジュール内の要素同士がどれだけ関連しているかを示す指標」です。
簡単に言うと「クラスの責務とクラスメソッドとデータの関連の強さ」を凝集度といいます。
参考
責務とメソッドとデータ関連の強さとは?
「クラスの責務とクラスメソッドとデータの関連の強さ」とは?
クラスの責務とは「そのクラスは何をするクラスか?」という問いへの答えです。
クラスは何をするクラスか明確に定義されており、
そのクラスに適したメソッドやデータが関連して存在しているかが凝集度ということが分かります。
以下の観点で凝集度を見たりします。
・クラスの責務が明確か
・責務に応じたメソッドが配置されているか
凝集度が高い例
クラスの責務がハンバーガーを提供するとしましょう
その場合にハンバーガーを作る・ハンバーガーを提供するメソッドがそのクラスにある場合は責務に応じたメソッドが存在するので凝集度は高いと判断できます
凝集度が低い例
ただ以下のようにサラダを提供するメソッドやライスを提供するメソッドが存在する場合は、責務から関係ないものが存在してしまっていることから凝集度が低いといえます。
凝集度が高いことのメリット
理解容易性を高められる
凝集度が高いモジュールは、クラスの役割や目的が明確で分かりやすく設計されています。
関連する機能が集中しているため、他の部分との関係や依存関係を理解しやすくなります。
これにより、開発者や保守者がソフトウェアの全体像を把握しやすくなるため理解容易性が高くなります。
噛み砕き
家の服の管理とかも同じですね
以下がクラスの責務で
- ズボンを入れる箱
- 靴下を入れる箱
- パンツを入れる箱
以下がメソッド
- ズボン
- 靴下
- パンツ
箱に対して箱が指定するものと異なっているものがあると、この箱は何か?入っているものは何に使っているものか?とわからなくなりますよね
まとめ
凝集度はクラスの責務とメソッドやデータの関連度のこと。
凝集度を高めることで理解容易性が高まる
凝集度を高めるのに重要なのは
1.クラスの責務を明確にする
2.責務に応じたメソッドやデータかを判断する