結合度とは
結合度とは「モジュール間の依存度の高さを示すもの」です
凝集度に関してはモジュール内の評価に使われるのに対して 結合度はモジュール間の相互依存性(依存度)の程度を示します。
凝集度は以下を読んでください
依存とは
依存関係は、一つのオブジェクトが他のオブジェクトに対して依存している状態を表します。この関係には「使う側(使用側)」と「使われる側(被使用側)」があります。
依存の例
-
ユーザークラス(使われる側)
ユーザーは名前やメールアドレスなどの情報を持ちます。 通知クラス…通知は送信先ユーザーやメッセージなどの情報を持ちます。 -
通知クラス(使う側)
ユーザークラス(使われる側)に依存しています。 通知クラスで特定のユーザーに通知を送信するために、ユーザーの情報(名前やメールアドレスなど)にアクセスする必要があります。 つまり、通知を送信するためにはユーザークラスに依存しており、ユーザーの情報を使って通知の処理を行います。
依存関係がある場合、使う側(通知クラス)は使われる側(ユーザークラス)に依存しており、使われる側の変更が使う側にも影響を与える可能性があります。
例えば、ユーザークラスの属性やメソッドが変更されると、通知クラスも変更が必要になるかもしれません。
依存度が高いと?
つまり依存度が高い(結合度が高い)と依存先の修正の影響を受けやすくなるため、変更容易性が低いです。
依存度が低いと?
依存度が低い(結合度が低い)と依存先の修正の影響が受けにくいので、変更容易性が高いです。
まとめ
結合度とは、モジュール間の依存度の高さを示すものです。
依存とは使用側と被使用側の関係のことです。
依存が多いほど結合度は高く
依存が少ないほど結合度は低い
そして結合度が高いと変更容易性を下げてしまいます。
そのため不要に結合度を高めないように実装を進める必要があります
(継承ではなくて抽象クラスを用いる/引数に不要なものを渡さないなど)