凝集と結合の違いは何ですか?
結合と凝集性はどのようにしてソフトウェア設計の良し悪しにつながるのでしょうか?
これら 2 つの違いと、それらがコード全体の品質に与える影響を説明する例にはどのようなものがありますか?
ベストアンサー1
凝集度は、クラス (またはモジュール) が実行できることを指します。凝集度が低いということは、クラスがさまざまなアクションを実行することを意味します。つまり、クラスは広範囲にわたっており、実行すべきことに焦点が当てられていないということです。凝集度が高いということは、クラスが実行すべきこと、つまりクラスの意図に関連するメソッドのみに焦点が当てられていることを意味します。
凝集性が低い例:
-------------------
| Staff |
-------------------
| checkEmail() |
| sendEmail() |
| emailValidate() |
| PrintLetter() |
-------------------
高い凝集性の例:
----------------------------
| Staff |
----------------------------
| -salary |
| -emailAddr |
----------------------------
| setSalary(newSalary) |
| getSalary() |
| setEmailAddr(newEmail) |
| getEmailAddr() |
----------------------------
結合については、2 つのクラス/モジュールが互いにどの程度関連または依存しているかを示します。結合度が低いクラスの場合、一方のクラスで何か大きな変更を加えても、もう一方のクラスには影響しません。結合度が高いと、コードの変更と保守が難しくなります。クラスは密接に結びついているため、変更を加えるとシステム全体の改修が必要になる場合があります。
優れたソフトウェア設計では、凝集性が高く、結合度が低くなります。