モジュール同士は粗結合に保つ
1. 原則
モジュール同士は粗結合に保つ
- モジュールの結合度は極力弱く(粗結合)設計する
- モジュールは、互いに密結合になる状態は避け、粗結合であることを保たなければならない
2. 根拠
コードがシンプルになる
- 結合度の低いコードは互いの影響が最小限になるのでコードがシンプルになる傾向がある
- 逆に結合度の高いコードはデータ構造や状態など相互に及ぼす影響が大きくなる為、コードが複雑化する傾向にある
テストがしやすくなる
- コードがシンプルであれば必然的にユニットテストも容易になる
- 結合度が高いコードではユニットテストの事前処理が煩雑になったり、複雑なモックが必要になったりなどユニットテストが面倒になる傾向にある
保守性が高くなる
- コードがシンプルになり、テストがしやすいということは保守しやすいという事になる
3. 指針
- 具体的な処理は別モジュールに切り出して実行時に与えるようにする
- ブリッジパターンやDIパターンを参照
4. 注意
参考資料
Appendix-1 サンプル
メッセージ結合
- 引数の無い関数呼び出し
- 結合度は一番低い
- 結合度としては最良だがこれだけではプログラムを実装することはできない
データ結合
- 関数/メソッドは引数のみで結合する
- 引数はスカラー型である
スタンプ結合
- 構造体やクラスなど構造化されたデータによって結合している
- 渡される構造体に依存しているので結合度は高い
制御結合
外部結合
- 複数の関数/メソッドが標準化されたAPIに基づくグローバルなデータに依存している
- ネットワーク通信とかDBとか
共通結合
- 複数の関数/メソッドが同じグローバル変数に依存している
内容結合
- 関数の内部をポインタ操作やリフレクションなどで直接参照するなどしている
- 現在一般的なプログラミング言語では実装が難しいのでは?
関連