akkun_choi pedia
mindiaakkun_choi pedia見出し語

結合度

akkun_choi · 2008-12-19 更新 · 1 ポイント

恋人どうしのようにくっついているのではなく、職場の同僚のように冷めた関係にしよう

Code Complete 2nd Edition

モジュール間の結びつきの強さのこと。結合が強いほど修正が困難になる。

大学の先生から教えてもらった。それ以来プログラミングするときには必ず意識している。構造化プログラミングが生まれたのも、オブジェクト指向プログラミングが生まれたのも、いかにして疎結合にするかという必要性から生まれたものだ。なのでこれを知っておけば小手先の知識は不要といえる。

結合の基準(Code Complete

 引数の数。あんまり多すぎるとルーチン切り分ける意味がなくなる。そういうのは大抵設計が悪い。

 モジュール間の結びつきを見えるようにする。例えばある変数をグローバル変数にする。依存関係が容易に把握できるかどうか?

 どれくらい簡単に変更できるか。

結合の種類(コンスタンチンとヨードン、Wikipedia:en)

ソフトウェア構造化設計技法が原典?
結合度が高い(ダメな)順。

 別のモジュールの中身に依存する

 グローバルデータを参照

 外部宣言しているデータを参照する(publicなデータとか?)

 フラグとか、処理を制御するための引数を渡す

 構造体を渡す

 決められた引数でデータを渡す

 (引数のない)メソッドの呼び出し。メッセージパッシング

オブジェクト指向プログラミングに見られる結合(Wikipedia:en)

 子は親を知ってるけど、親は子を知らない。子が親に依存してるので、親の修正が難しくなる。

 あるメソッドが別のメソッドに依存してしまうこと。executeしないとerrorが取得できないような。
 IteratorのhasNext(), next()がそうなんじゃないかという
 http://hamletdarcy.blogspot.com/2008/09/temporal-coupling-in-java-and-some.html
 これは結構やってしまうことが多い。

結合の種類(Code Complete

 データ結合

 あるオブジェクトをインスタンス化する

 あるオブジェクトに、指定のオブジェクトを要求すること

 別のモジュールの内部構造を使用する場合
 制御結合、外部結合、共通結合、内部結合は全部これにあたるみたい。

その他

ある値を状況によって複数の意味を持たせること

参考

Code Complete

http://en.wikipedia.org/wiki/Coupling_(computer_science)
一番詳しい。
http://homepage3.nifty.com/koha_hp/KeyWords/KW.Coupling.html
 ハイブリッド結合について書いてるのはここだけ

関連する見出し語