# 凝集度

凝集度を高くしましょう。凝集度とは、モジュール内の各処理がどの程度関連しているかを表す度合いです。凝集度が高いほど変更の影響範囲が小さくなり、再利用もしやすくなります。

以下の種類があります。

  • 機能的凝集 (Functional Cohesion)
    • 単一のタスクを行うモジュール
    • たとえば消費税の計算を行うモジュールなど
  • 逐次的凝集 (Sequential Cohesion)
    • ある部分の出力が別の部分の入力となる処理を集めたモジュール
    • たとえばファイルを読み込んでデータを加工して出力する処理を集めたモジュールなど
  • 通信的凝集 (Communicational Cohesion)
    • 同じデータを扱う部分を集めたモジュール
    • たとえばユーザの追加、削除、編集処理を集めたモジュールなど
  • 手続き的凝集 (Procedural Cohesion)
    • 決まった順番で実行する処理を集めたモジュール
    • たとえばIDとパスワードで照合し、認証後にセッションを発行する処理を集めたモジュールなど
  • 時間的凝集 (Temporal Cohesion)
    • 時間的に近い処理を集めたモジュール
    • たとえばアプリの起動時に設定ファイルを読み込んでデータベースに接続したり各インスタンスを初期化したりする処理を集めたモジュールなど
  • 論理的凝集 (Logical Cohesion)
    • 論理的に似た処理を集めたモジュール
    • たとえばマウス、キーボード、タッチパネルの入力処理を集めたモジュールなど
  • 偶発的凝集 (Coincidental Cohesion)
    • 関連性を考慮せずに集めたモジュール

凝集度が高いものから並べると以下のようになります。

(高い)機能的凝集 > 逐次的凝集, 通信的凝集 >
(やや低い)手続き的凝集, 時間的凝集 >
(低い)論理的凝集 >> 偶発的凝集

NOTE

✏️ 凝集度を高くする

# 関連

# 結合度 / コナーセンス

凝集度を高くすると結合度が低くなったりコナーセンスが弱くなったりします。