答えて
カップリング
ルース:あなたとコンビニエンスストアで男。あなたはそれぞれの目標を達成するために明確なプロトコルを使ってコミュニケーションをとります。お金を払うと、彼はCheetosのバッグで歩き回ることができます。いずれかの人がシステムを中断することなく交換することができます。
タイト:あなたとあなたの妻。
結束
低:コンビニエンスストア。あなたは、ガスからミルク、ATMバンキングまであらゆるものを手に入れます。製品とサービスは共通点がほとんどなく、そのすべてを1か所にまとめておくことの利便性は、コストの増加と品質の低下を相殺するには不十分な場合があります。
高:チーズ店。彼らはチーズを売る。他に何もない。それはチーズになると、彼らを打ち負かすことはできません。 (これらのものを含む)OOに関連するソフトウェアの設計思想の最高の包括的な議論の
ハム、私は高い結束のための妻の例を予期していた、私は少し失望していると言う必要があります:) – ubiquibacon
"ああ、私たちはカマンベールをいくつか持っています...実際、それは非常に流出しています...私はそれがあなたが好きなものよりも走っていると思います。はい、サー。 "ああ...猫はそれを食べた。" – MikeMurko
私は、この答えを探して、ユニの同僚を見に来ました。しかし、それは関係がありません – danielcooperxyz
カップリング - モジュール(パッケージ、クラス、メソッド)が他のモジュールにどれくらい依存しているかの尺度。カップリングを低減するか、または所与のモジュールがシステムの他のモジュールに依存する量を低減することが望ましい。
結束 - モジュールのメンバ(メソッド内のクラス、メソッド、機能)が同じモジュールの他のメンバとどれほど密接に関連しているかの尺度。モジュールが非常に特定のタスクを有し、そのタスクだけを行うことを示すように、凝集力を高めることが望ましい。
「は結合が最小化されるべきモジュール、 間の相互依存性の尺度である」 「凝集、最大化される品質は、各モジュールによって実行される活動との関係 に焦点を当てています。」この論文から引用し
:結合を測定するhttp://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf
間に合わせと-方法は、あなたのimport
(または類似の)文を測定することです。
一つは、バートランド・メイヤーのObject Oriented Software Constructionです。 「カップリング」について
次のように、彼は彼の弱カップリング/小インタフェースルールを与える:
二つのモジュールが通信した場合、彼らはできるだけ情報を交換する必要があります。凝集に関連
マイヤーの材料は、これまで、単一の簡潔な声明を煮詰めていないが、私はそれまでかなりよくスティーブ・マッコーネルのCode Complete合計からこの文を考える:
結束はルーチンのサポートにどのように密接にクラス内のすべてのルーチンまたはすべてのコードを指し中央目的
素晴らしい答え! – SebNag
用語を導入し、元の論文を参照してください: http://www.research.ibm.com/journal/sj/132/ibmsj1302C.pdf
最新のリンクが必要です(現在のリンクはIEEE paywallにつながります)。この記事は "Structured Design"というタイトルです。DOI:10.1147/sj.132.0115 – Mark
モジュール間の結合が強く、モジュール間の結合が低いことは、多くの場合、OOプログラミング言語で高品質に関連しているとみなされます。例えば
、各Javaクラス内のコードは高い内部凝集力を有していなければならないが、として緩く他のJavaクラスのコードに可能な限り結合すること。
カップリングは、2つのクラス/モジュールがどのように関連しており、それらが互いにどのように依存しているかを示します。カップリングが低いということは、あるクラスで何かメジャーなものを変更しても、他のクラスに影響してはならないということです。結合が強くなると、クラスが密接に結合されるため、コードを変更したり維持したりすることが難しくなり、変更によってシステム全体が改造される可能性があります。
結束は、クラス(またはモジュール)が行うことを指します。結束度が低いということは、クラスが多種多様な行動を行い、それが何をすべきかに集中していないことを意味します。結束度が高いということは、クラスが何をすべきか、すなわちクラスの意図に関係するメソッドのみに集中していることを意味する。
優れたソフトウェア設計は、すべて高い結合力と低い結合性を実現します。
- 1. エンティティのフレームワークとカップリング
- 2. Coffeescriptで約束を結ぶ
- 3. 差別化された連合と結束を結ぶ?
- 4. Javascriptの約束 - 検索結果
- 5. サーバーなしのセレニウムゴランの結束
- 6. 組成物のゆるいカップリング
- 7. Django looseカップリングと既存のモデルを拡張する
- 8. mongooseとq約束
- 9. 流星と約束?
- 10. 先物と約束
- 11. 約束とプロトタイプ `this`
- 12. OOP:状態の設定とそれを表示することのカップリング?
- 13. jQueryの約束とバックボーン
- 14. getJSONとコールバックでjQuery約束
- 15. ブルーバードの約束とドメイン
- 16. Emberと約束を使用
- 17. MVC 4つの束ねるだけjqueryの1.7結果
- 18. var_dump($ _ POST ['pass_field'])の結果はダッシュの束ですか?
- 19. 多次元配列で約束の結果を得る
- 20. 最初に失敗した場合に2番目の約束結果を返す約束
- 21. "loose"のカップリングはなぜですか?私のコードを疎結合して書く方が良いですか?
- 22. 約束は、約束の前リターンは、
- 23. 返信済み約束約束
- 24. 約束
- 25. 初心者のための緩やかなカップリングとオブジェクト指向のプラクティス
- 26. 神オブジェクト - 'マスター'オブジェクトへのカップリングを減らす
- 27. Observerパターンはカップリングをどのように低減しますか?
- 28. ブルーバードの約束は、私がknexjsとの約束を使用していシーケンス
- 29. アレイリストの束
- 30. 拘束ウィンドウwpf
私は最初に逃げ出した1つの区別:「結合」はクラス間であり、「結束」は単一クラス内である*。 –