タグ付けされた質問 「cohesion」

8
クラスが単一の責任原則を満たしているかどうかを判断する方法は?
単一責任の原則は、高い結束の原則に基づいています。この2つの違いは、SRPに準拠するクラスの責任は1つだけであるのに対し、非常に凝集性の高いクラスには密接に関連する一連の責任があることです。 しかし、特定のクラスに一連の責任があり、したがって非常に凝集性があるのか​​、それとも1つの責任しか持たず、したがってSRPに準拠するのかをどのように判断するのでしょうか。言い換えれば、クラスが非常にきめ細かいと考える人もいるかもしれません(クラスがSRPに準拠していると考える人もいるかもしれませんが)

3
論理的結束とは何ですか?なぜそれが悪いまたは望ましくないのですか?
結合と凝集に関するc2wikiページから: 凝集度(モジュール内の相互依存性)強度/レベル名:(悪いものから良いものへ、高い凝集性が良い) 偶然の凝集度:(最悪)モジュール要素は無関係 論理的凝集度:要素は、外部モジュールから選択されたものと同様のアクティビティを実行します。つまり、実行する操作を選択するフラグによって実行されます(CommandObjectも参照)。つまり、関数の本体は1つの巨大なif-else / switch on operationフラグです 一時的な結束:実行される一般的な時間のみに関連する操作(すなわち、initialization()またはFatalErrorShutdown?()) 手続き的結束:それぞれが異なるデータにある、異なるが順次のアクティビティに関与する要素(通常、線形シーケンス境界に沿って複数のモジュールに簡単に分割できます) コミュニケーションの結束:同じデータまたは入力を必要とする以外は無関係な操作 シーケンシャル凝集:重要な順序での同じデータの操作。1つの関数の出力が次の関数に入力される(パイプライン) 情報のまとまり:モジュールはいくつかのアクションを実行します。各アクションには独自のエントリポイントがあり、アクションごとに独立したコードがあり、すべて同じデータ構造で実行されます。基本的に、抽象データ型の実装。つまり、sales_region_tableとその演算子の構造を定義します。init_table()、update_table()、print_table() 機能的結束:すべての要素が1つの明確に定義されたタスク、つまり1つの操作を実行する関数get_engine_temperature()、add_sales_tax()に貢献します (強調鉱山)。 私は論理的な結束の定義を完全に理解していません。私の質問は: 論理的な結束とは何ですか? なぜそんなにひどいラップ(2番目に悪い凝集力)になるのですか?

6
フィールドとメソッドの引数[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私は新しいクラスを書き始めたばかりで、厳密には必要のないメソッド引数をたくさん追加していることに気付きました。これは、クラスの一般的な構成や依存関係ではなく、特定のメソッド呼び出しに固有のクラス内の状態を回避する習慣に従っています。 そうすることは、引数を持たない可能性のある多くのメソッドが1、2、または3で終わることを意味します。 このトレードオフについてどう思うか、どのような状況でどのアプローチを取るかをどのように決定するかについて、あなたの意見を聞きたいのですが。 コードを説明するとき、コードは英語よりも理解しやすいことが多いため、両方のバリアントを含む小さな要点を作成しました:https : //gist.github.com/JeroenDeDauw/6525656
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.