1

このフォーラムには結合度と凝集度の例を含む多くの良い例がありますが、私はそれをコードに完全に適用するのに苦労しています。コード内で変更が必要な可能性のある部分を特定できます。Javaの専門家なら誰でも私のコードを見て、どの側面が良いか悪いかを説明してくれるでしょうか。自分で変えてもかまいません。多くの人がお互いに意見を異にしているようで、どの原則に従うべきかを実際に理解するのは難しいと感じています...

4

4 に答える 4

3

まず、このようにさまざまな答えが得られる主な理由は、これが時間の経過とともに実際に芸術になるということです。あなたが得る意見の多くは、厳格なルールや事実に要約されていません。それ以上に、それは一般的な経験に帰着します。これを10〜20年行った後、あなたは自分がしたことで痛みを引き起こしたこと、そしてどのようにして再びそれを避けたかを思い出し始めます。多くの答えはいくつかの問題に対して機能しますが、彼らの意見を決定するのは個人の経験です。

私があなたのコードで変更する本当に大きなことは1つだけです。コマンドパターンと呼ばれるものを調べることを検討します。これに関する情報は、WebまたはGoFブックのいずれかで見つけるのは難しいことではありません。

主なアイデアは、「子の追加」、「親の追加」の各コマンドが個別のクラスになることです。単一のコマンドのロジックは、テストと変更が容易な単一の小さなクラスに含まれています。次に、そのクラスを「実行」して、メインクラスから作業を行う必要があります。このように、メインクラスはコマンドライン解析のみを処理する必要があり、FamilyTreeに関する知識のほとんどを失う可能性があります。どのコマンドラインがどのコマンドクラスにマップされているかを知り、それらを開始する必要があります。

それは私の2セントです。

于 2011-01-05T15:59:21.833 に答える
1

アランとジェームズの本「デザインパターンの説明」をお勧めします-オブジェクト指向デザインの新しい視点(ISBN-13:978-0321247148):

表紙:デザインパターンの説明-オブジェクト指向デザインの新しい視点

これは、オブジェクト指向設計における凝集度と結合度を含む、has -ais-の決定についてのすばらしい本です。

于 2011-01-05T14:31:18.627 に答える
1

要するに:

ソフトウェアエンジニアリングにおける凝集度は、実際の生活と同様に、全体(この場合はクラスとしましょう)を構成する要素が実際に一緒に属していると言える程度です。したがって、これは、ソフトウェアモジュールのソースコードによって表現される各機能がどれほど強く関連しているかを示す尺度です。

オブジェクト指向の観点から凝集度を確認する1つの方法は、クラス内のメソッドがいずれかのプライベート属性を使用しているかどうかです。

今、議論はこれよりも大きいですが、高凝集度(または凝集度の最良のタイプ-機能的凝集度)は、モジュールの一部がモジュールの単一の明確に定義されたタスクに寄与するため、モジュールの一部がグループ化される場合です。

簡単に言えば、結合とは、あるコンポーネント(必ずしもそうではないが、クラスを想像してください)が別のコンポーネントの内部動作または内部要素についてどれだけ知っているか、つまり、他のコンポーネントについてどれだけの知識を持っているかです。

緩い結合は、システムまたはネットワーク内のコンポーネントを相互接続して、それらのコンポーネントが実際に可能な限り相互に依存しないようにする方法です…</ p>

長い間:

これについてブログに投稿しました。例などを使用して、これらすべてについて詳細に説明します。また、これらの原則に従う必要がある理由の利点についても説明します。私はそれが役立つと思います...

于 2015-04-23T09:37:59.230 に答える
0

結合は、各コンポーネントがシステム内の他のコンポーネントに依存する度合いを定義します。2つのコンポーネントAとBが与えられた場合、Aが変更された場合にBのコードを変更する必要があります。Cohesionは、単一のソフトウェアコンポーネントのさまざまな機能がどの程度一貫しているか、または強く関連しているかの尺度を定義します。これは、クラスが行うことを指します。凝集度が低いということは、クラスが多種多様なアクションを実行し、何をすべきかに焦点を合わせていないことを意味します。高い凝集度は、クラスが何をすべきかに焦点を合わせていることを意味します。つまり、クラスの意図に関連するメソッドのみです。注:優れたAPIは、緩い結合と高い凝集度を示します。常に回避する必要がある特に忌まわしい形式の密結合は、直接または間接的に相互に依存する2つのコンポーネント、つまり依存サイクルまたは循環依存を持つことです。 http://softwarematerial.blogspot.sg/2015/12/couple-and-cohesion.html

于 2016-01-03T05:36:49.030 に答える