0

横断的関心事やアスペクト指向プログラミングに関連して、コードのもつれについてよく読んでいます。この記事1では、コードのもつれについて次のように説明しています。

ソフトウェアシステムのモジュールは、同時にいくつかの要件と相互作用する場合があります。たとえば、多くの場合、開発者はビジネスロジック、パフォーマンス、同期、ロギング、およびセキュリティについて同時に考えます。このような多数の要件により、各懸念事項の実装からの要素が同時に存在し、コードが絡み合うことになります。

それは低凝集度とまったく同じではありませんか?高いもつれと低い凝集度の間に違いはありますか、それとも同じことを表す2つの異なる単語ですか?

4

2 に答える 2

2

ウィキペディアによると:

懸念事項の実装は、そのコードが他の懸念事項を実装するコードと混在している場合に絡み合います。もつれが発生するモジュールはまとまりがありません。

次の場合、凝集度は低下します。-クラス
に埋め込まれ、そのメソッドを介してアクセスされる機能に共通点がほとんどない。
-メソッドは、多くの場合、粗粒度または無関係なデータセットを使用して、さまざまなアクティビティを実行します。

したがって、コードが絡み合っていると、単一責任原則、オープンクローズド原則などのSOLID原則に違反することになります。

ほとんどの場合、これらの原則はすべて一緒になり、ある原則/ベストプラクティスに違反すると別の原則につながります。

しかし、もつれは必ずしもコードがまとまりがないことを意味するわけではありません。 たとえば、SecurityCheckerというクラスを作成できます。このクラスは、ユーザーの認証を行い、認証に関連するすべてのアクティビティをログに記録します。明らかに、これは認証とロギングである複数の懸念を処理しているでしょう。そのため、それはもつれたクラスになるでしょう。一方、これらの接続は両方とも同じデータセットで動作します。この場合、ユーザーデータ、ログオン回数、ログイン試行回数などが考えられます。したがって、結束性は依然として高い可能性があります。

一般に、これらの原則/ガイドライン/ベストプラクティスのほとんどは、同じ問題をさまざまな観点から見ています。最終的な目標は、全体的な設計がより保守可能で、効率的で、長期的にエレガントになるように、さまざまなコンポーネント/クラスなどの間の依存関係を管理することです。

于 2012-07-10T14:25:21.607 に答える
0

はい、非常に似ています。

Cohesion is used to indicate the degree to which a class has a single, well-focused purpose.

したがって、焦点を絞った単一の目的を持つクラスがある場合は、複数のことを実行しようとしても「絡み合っていない」ということになります。

于 2012-07-10T13:05:10.663 に答える