2017-03-31 15 views
0

ソフトウェアの結合と結束に関するアイデアをいくつか書こうとしていますが、実用的な意味がないのか分かりません。ですから、例とあなたの答えを説明したい場合は、単純な代数的表現を使用してください代数は、私たちすべてが話しyou'reかを理解することができ、順次プログラミング言語であることを想像...¿私はカップリングの意味について正しいですか?

Read about it in wikipedia

だからここ(¿これは正しいでしょうか?)私は信じたいものです。

'Implementation of A with Low Cohesion 
'(Coincidental cohesion because there is no 
' good reason or need to group the functions 
' in this way) 
a(x) = 2x + 1 
b(x) = 3x + 2 
r(x) = a(x) + b(x) 

...

'Implementation of A with High Cohesion (Almost Atomic) 
r(x) = 5x + 3 

...

'Implementation of A with Low Cohesion too 
a(x) = 2x + 1 
r(x) = a(x) + 3x + 2 

...

'Implementations of A with Functional Cohesion 
a(x, y) = x * y 'Groups multiplication 
b(x, y) = x + y 'Groups addition 
r(x) = b(a(5,x), 3) 

答えて

0

興味深いビュー、あなたは、より大きな概念を理解するための正しい道です。あなたがWikipediaの記事を参照したので、あなたの例はリストされている10種類のカップリングのどれかを表していると思いますか?

あなたの例はデータやメッセージの結合を表す可能性がありますが、基本的な代数ステートメントでは状態(ストア値など)が維持されないためです。

この単純な代数は、結局のところ、ソフトウェア開発における重要な結合パターンを表現するにはあまりにも単純すぎることに気づくでしょう。すぐに私はあなたの関数に複数の変数を追加することと、異なる変数名などを使用して、関数が畳み込まれる可能性のある方法を増やすことを提案します。

他の結合パターンを説明するために、少なくとも値を保存し、以前に格納された値を参照するための何らかの方法が必要です。代数の問題を解く際に私たちがやっていることですが、普遍的な構文や構造。 (スクラッチ・ペーパーと作業上の問題を思い出して問題を解決してください。誰もあなたにこれを行うための厳密なシステムを教えたことはありませんし、誰もが従うことはありませんでした)。異なるカップリングを示しているので、基本的にあなた自身のプログラミング言語に相当するものになります。あなたの意図が何であるかによって、それは非常に価値があり楽しい演習かもしれませんが、既存の言語でカップリングのタイプを表現しようとすると、より効率的に概念を学習することができます。

0

もう少し(Cade Perkinsのおかげで)私は間違っていたように見えます。

'Implementation of A with Functional Cohesion 
a(x, y) = x + y  ' Groups Addition 
b(x, y) = x * y  ' Groups Multiplications 
r(x) = a(b(5, x), 3) 

'Implementation of A with Low Cohesion 
'(Random cohesion because there is) 
' no reason to group the functions 
' in this way) 
a(x) = 2x + 1 
b(x) = 3x + 2 
r(x) = a(x) + b(x) 

...

'Implementation of A with High Cohesion (Almost Atomic) 
r(x) = 5x + 3 

...

'Implementation of A with Another Random Cohesion 
a(x) = 2x + 1 
r(x) = a(x) + 3x + 2 

...

例は実際におよそcohesion (according to wikipedia)ました

関連する問題