質問

私は彼のコードは、それが複数の目的を果たすという意味で、「コヒーレント」ではない誰かに伝えるためにしようとしています。私は、私は非常によくそれを説明することができるとは思わないので、私は良い参考と/または定義を探しています。

役に立ちましたか?

解決

私は正しい用語は凝集のだと思います。

  

コンピュータ・プログラミングでは、凝集には、どのように強く関連して焦点の尺度でありますソフトウェア・モジュールの様々な責任があります。凝集は、測定の順序型であると議論されている場合、通常、「高凝集」または「低凝集」として表現されます。

     

高い凝集を持つモジュールは、高凝集力が低い凝集力がこのようなテストすることは困難で、維持するのが困難であるなどの望ましくない形質と関連しているのに対し、堅牢性、信頼性、再利用性、およびわかりやすさを含むソフトウェアのいくつかの望ましい特性に関連付けられているため、好ましいこと傾向があり、再利用することは困難、と理解することさえ困難ます。

他のヒント

私は次の自分のコンピュータにスティーブマッコネル完全なコードを持っていた(つまり、聖書のプログラマー)ページのオープンを説明結束を持つので、私は私が共有したいと思った、

  

結束は、構造化設計から生まれました   通常は同じで議論されています   結合として文脈。結束を指し、   でどのように密接にすべてのルーチンへ   クラスまたはルーチン内のすべてのコード   焦点を当て、中央目的-方法をサポート   クラスがあります。含まれているクラス   強く関連する機能です   強い凝集力を有するものとして説明し、   そして、ヒューリスティック目標は作ることです   できるだけ強い結束ます。

私はこのしばらくのリファクタリングを説明するために用語「関心事の分離」を使用します。コードはかなり新しいとき、別の懸念は、最初は明確ではないとして、多くの場合、物事は一緒で集中れます。

あなたの共同作業者にこれを説明する一つの簡単な方法は、コードのテストケースを書くためにそれらを求めることであろう。これは、コードはクリアまたはコヒーレントでないことを示している必要があります。

を使用するもう一つの良いフレーズが機能/オブジェクトは「一つのことを行うには、それをうまくやる必要がある」ということです、これは、オブジェクト/メソッド名からシステムの全体的なアーキテクチャにすべてで意味を持っています。

これまでに与えられた答えに加えて、高い凝集を考えるための簡単な方法は、機能の重複がないこと、および個別のモジュール、コンポーネントやクラスに関連する機能の明確な別離です。あなたは他の関数と同様の機能をしたい、とあなたはカット&ペーストし、その後コードのコピーを変更した場合このように、あなたは凝集を減らしています。あなたは、元は、新しいケースは明らかに既存の機能に関連した新しいケースを扱うように変更した場合は、凝集が増加しています。あなたのプログラムが与えられたことを行う必要がある場合に関係なく、時間やどのように多くの場所でどのようにして、別の言い方をしない、最大結束のためにのみそのことを行うコードの一部いったんがあるはずです。同様に、特定のクラス、モジュールまたはコンポーネントは、責任の単一面積を有するべきです。単一のクラスに無関係な機能を塊又は成分も凝集を減少させる。

CodeWikiが言うように、

、凝集は、典型的には二つが特に厳しいインターフェイスを慎重に計画されていない、互いに反対に作用することができるカップリングして説明されています。結束のグーグルの記事の多くは、オブジェクト指向設計に関係するが、凝集およびカップリングはOOに限定されるものではない。

部品の、整然とした論理的、及び審美一貫した関係でマーク。 "コヒーレント引数" - http://www.websters-online-dictionary.orgから/定義/コヒーレント

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top