2017-01-26 4 views
2

私は現時点でさらにイントロJavaクラスを採用しています。これはクラスが簡単にこれを定義した方法です:結束と結合 - どのようにして閾値を決定しますか?

凝集力:この場合、単一のモジュールがそのタスクに集中していることを意味します。

カップリング:このカップリングでは、2つ以上のモジュールがどのように絡み合っているかの程度のレベルを意味します。

結合性と結合性のレベルはどのようにして決まりますか?

例えば、私のメソッドの中には、同じクラスにある他のメソッドを呼び出すものがあります。つまり、他のメソッドを呼び出すメソッドは、「呼び出し」メソッドがコードブロックを終了するために他のメソッドに依存します。これは、同じクラスのメソッドで結合力が低く結合度が高いことを意味しますか?あるいは、これらの概念は異なるクラスと異なるパッケージをより多く参照しますか?

+0

これはクラス/モジュールの問題であり、メソッドの問題ではありません。 – Kayaman

+0

ありがとう!クラスノートはあまり明確ではなかったので、私は確認したかったのです。私が知るべきこれらの概念には他に重要なことはありますか? – simmonson

答えて

1

凝集/カップリングのメトリックがあります。 https://softwareengineering.stackexchange.com/questions/151004/are-there-metrics-for-cohesion-and-couplingを参照してください。

したがって、結合/結合のレベルを「判断」する方法は、それぞれの測定基準を測定するツールを実装することです。 (あるいはこれを行う既存のツールを見つける。例えば、ソナー。)

どの一つが凝集および/または結合のレベルのため閾値を決定するのですか?

私は、あなたがコードベースでそれぞれの測定基準の値を「容認できない」と呼ぶときをどう決定するのでしょうか?

基本的には、決定するのはあなた次第です。ツールが「悪い」価値を報告している例を見て、それが本当にどれほど悪いかを判断することで、私はそれを行います。または、使用しているツールのデフォルトのしきい値を使用してください。

+0

乾杯...私はこれをさらに研究します! – simmonson

3

コードの各行は特定の意味と目的を持っている必要があります。それぞれの方法は具体的な意味と目的を持っています。各クラスには特定の意味と目的があります。それぞれのコードリポジトリは、特定の意味と目的を持っている必要があります。

これは、メソッドが別のメソッドを呼び出すべきではなく、クラスが別のクラスなどを使用してはならないことを意味するものではありません。むしろ、理想的には、それが呼び出す他のすべてのメソッドを読み込むことなくメソッドを読み、理解することができなければならないことを意味します。クラスが合理的な大きさであると仮定すると、クラス間ではなくメソッド間を簡単に行き来することができるなど、クラスよりも結束力が強く、結びつきが強くなければなりません。あなたがコードを読んで維持しているとき。

+0

乾杯、ちょうど私の質問にお答えしましたが、おそらく私はまだJavaにはまだまだ慣れていないと言えるでしょう。私はIEソフトウェアエンジニアのReddit AMAを読んで、レガシーコードがたくさんあると言いました。私の推測は、結束と結合のレベルに起因するものですが、何かを推測する私の経験不足です。 – simmonson

1

私は間違っているかもしれませんが、ここはちょうど私の謙虚な入力です。

結束は、しばしばカップリングとともに言及されるが、逆の関係を有する。高い結合力==低い結合力。

私は、単一の モジュールがしっかりとそのタスクに焦点を当てていることを意味し、この場合の結束には、高い凝集のためにあなたに

狙いを引用してみましょう。

だからこそ、そういう意味です。あるものだけを行い、それをうまくやってくれるもの。たとえば、エンティティをデータベースに保存する方法は、そのエンティティをデータベースに保存する方法のみに焦点を当てる必要があります。エンティティの正確性を心配すべきではありません(エンティティインスタンス属性のすべてがすべてのデータベーススキーマの検証に合格し、その場合、この妥当性検査は、おそらくインターセプタによって処理されるべきです)。

カップリングとは、2つのモジュールが互いに依存する度合いを指します。メンテナンスや再利用性などを促進するため、カップリングとは、それほど優れていません。イベントの消費者であり、互いに知り合う必要はありません。エミッタでさえもの火災と覚えがあります、そして消費者はシステムがそれらにイベントを配達するときにイベントを受け取ります。

+0

ありがとう、私は定義を理解し、仕事で見たことに基づいています(エンジニアとしてではなく、アーティスト)は、ゲームエンジンのロジックは、火と忘れの概念に大きく依存しています。私はこれをさらに勉強します... – simmonson

関連する問題