凝集度
とは
機能を実行するためにどのくらいの関連責任とアイデアが団結しているかどうかを示す程度。
凝集度が高いプログラムの方が理解しやすいため、メンテナンス性が高くなる。
凝集度が低いクラスの問題
理解するのが難しい
別に再利用が難しい
メンテナンスするのが難しい
他のクラスの変化に敏感である。
凝集度の程度 【wiki参考】
偶発的凝集(Coincidental Cohesion)「最悪」
適当(無作為)に集められたものがモジュールとなっている。モジュール内の各部分には特に関連性はない(例えば、よく使われる関数を集めたモジュールなど)。
論理的凝集(Logical Cohesion)
論理的に似たようなことをするものを集めたモジュール(例えば、全ての入出力ルーチンを集めたモジュールなど)。
時間的凝集(Temporal Cohesion)
動作させたときにモジュール内の各部分が時間的に近く動作する(例えば、ある例外を受けたときに動作するルーチンとして、ファイルをクローズするルーチン、エラーログを作成するルーチン、ユーザーに通知するルーチンなどを集めたモジュール)。
手続き的凝集(Procedural Cohesion)
ある種の処理を行うときに動作する部分を集めたモジュール(例えば、ファイルのパーミッションをチェックするルーチンとファイルをオープンするルーチンなど)。
通信的凝集(Communicational Cohesion)
同じデータを扱う部分を集めたモジュール(例えば、同種のレコードの情報を操作するルーチンを集めたモジュールなど)。
逐次的凝集(Sequential Cohesion)
ある部分の出力が別の部分の入力となるような部分を集めたモジュール(例えば、全体としてあるファイルを読み込んで処理をするモジュール)。
機能的凝集(Functional Cohesion)「最善」
単一のうまく定義されたタスクを実現するモジュール(例えば、角度のサインを計算するモジュール)
補足資料
https://gyazo.com/b10810acbcddde91b0670edfe9664302
https://gyazo.com/7de93c96661945f26a0109c567ea2359