問題タブ [cohesion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1300 参照

java - クラスの結束と結合の改善

この一連のコードを受け取ったので、コードの結合とクラスの結合を改善する方法を提案する必要があります。しかし、これらのクラスはイベントを利用しているように見えるので、非常にうまく分離されていると思いました。結束に関しては、すべての init() 呼び出しが一緒に配置され、すべてがまったく問題ないように思えます。

クラスの結束と結合を改善する方法はまだありますか? 私には問題ないように見えますが、何かが欠けていると思います。

これに関する提案をありがとう。

0 投票する
1 に答える
363 参照

design-patterns - DAO パターンは結束/SRP を損ないますか?

例として使用しましょう:

責任はいくつありますか?1または4?

0 投票する
1 に答える
429 参照

oop - DRYを踏襲しながらカップリングを低く抑える

「高い結束と低い結合を維持する」(またはその変形) というマントラが頻繁に使われます。しかし、「同じことを繰り返すな」と矛盾することがよくあります。

たとえば、std::stringC 文字列を再実装したり使用したりするのは悪いことだと誰もが同意できると思いstd::stringます。

別の例として、 を取り上げstd::stringstreamます。から継承しiostream、から継承istreamし、ostreamから継承しios、 から継承しios_baseます。これらすべての派生を通じて、多くの機能を継承しています。手作業で再実装するのは非常に悪い考えです。<ios>また、ヘッダーと<istream>ヘッダーのみが含まれていてもプルするため、<sstream>カップリングが増加します。

モジュールごとに車輪を再発明することなく、結合を低く保つにはどうすればよいでしょうか?

編集: 2 つの概念が共存できない場合、どちらを優先する必要がありますか?

0 投票する
2 に答える
2424 参照

coupling - 凝集対。カップリング

この質問は、ソフトウェアをツリーのように扱います。

  • ツリー内の各ノードは、コード単位を表します (例: クラス \ メソッド \ 行など)。
  • ソース コードで X が Y に設定されている場合、ノード X はノード Y の息子です。

T という用語の定義は次のとおりです。

ノード X に対する T は、X の変更が X のサブツリー内にあるノードの変更をもたらす確率です。

T という用語は何ですか? 凝集またはカップリング ?

0 投票する
1 に答える
2351 参照

coupling - カップリングと凝集力を測定するためのツール

システム内の結合と結束を測定するのに役立つツールを知っていますか?

0 投票する
2 に答える
150 参照

java - この状況でカスタム イベントを作成する必要がありますか?

趣味でゲームを作っています。このゲームには、人間を追いかけるモンスターがいます (パックマンのようなもの)。パックマンが動けなくなると、人間を食べたり、何かを動かしたりできます。イベントを発生させる必要があります。これは、すべてのオブジェクトがお互いを認識しなければならないため、私のプログラムが非 oop になったためです。

イベントに応答するオブジェクト (ゲームと呼ばれる) のようなコントロールがあります。人間が動かした、モンスターが動かした、人間が食べた、モンスターが立ち往生し、最終的に何かが起こったことをビューに知らせて再描画します。ビューがアクターのキープレスに応答し、それらのイベントが何らかの方法で (イベントを使用して) 人間に到達する必要があることもポイントです。

  1. この問題を最もよく解決する方法を誰かが教えてくれますか? 同様の問題をインターネットで検索しましたが、見つかりませんでした。

  2. MVC: コントローラーはビューを認識していますか? もしそうなら: プログラム全体はコントローラから始まりますか?それともビューから始まりますか? (何が誰を作るか)

0 投票する
1 に答える
233 参照

php - 複数のRSSフィードにPHP関数を再利用して、結束力を高めます

私のホームページには、画像に表示されているように、世界中の3つの都市の天気が含まれています

index.php

ホームページで、各都市のRSSURLを格納する3つの変数を宣言します

上に表示されている3つのURLから同一のタグを引き出し、渡された変数を除いて3つの同一の関数を使用します。

以下は、関数に渡される変数を示しています。明らかに、$weatherが返される前に他の関数が使用されます。

前述したように、現在、この関数を3回繰り返して、上記の例で渡された$newYorkWeatherSource変数を置き換えています。この関数を3回再利用しても、ホームページに3つの都市の天気を表示し続けるために、別のURLを渡す方法はありますか?もちろん、各都市が個別のページに表示されていれば、機能を再利用するのは簡単ですが、目的は、比較のためにそれらをまとめることです。

何か案は?

前もって感謝します。

0 投票する
3 に答える
296 参照

php - XML ドキュメントから配列項目タグにアクセスするための PHP 関数の再利用

XML を使用してそのコンテンツの一部を駆動する Web サイトを作成しました。たとえば、以下に示す現在の為替レートです。

ここに画像の説明を入力 この Web サイトでは 3 つの為替レートを比較しています。現在、現在の為替レートを返すなど、同じ目的を実行する各都市に対して個別の関数を使用しています。

これらの関数の唯一の違いは、データを要求する XML ドキュメントの item タグの位置です。

ユーロ通貨へのアクセスを提供する上記の配列のitem[15]に注目 してください。以下では、米国の通貨はitem[56]です。

結束力を高めるために、3 つの機能を 1 つの機能に組み合わせることが可能であれば、何かアイデアはありますか?

ユーロ通貨にアクセスするために使用する関数は次のとおりです。

フィード URL は、cityConfig.php という別の構成スクリプトで設定されます。

前もって感謝します

0 投票する
5 に答える
1300 参照

java - 大規模なクラスの処理

私は最近、ここ数か月で Java でのコーディングを開始しました。多くのメソッドで肥大化しすぎている Matrix クラスがあります。また、Matrix を拡張する SquareMatrix クラスも用意しており、肥大化の一部を軽減しています。

私が見つけたのは、Matrix クラスの多くのメソッドが一般的に行列に関連しているということです。addMatrix(Matrix)、multiplyMatrix(Matrix)、multiplyMatrix(float) などのすべての基本があり、getGaussian(Matrix) や getLUDecomposition(Matrix) などのより複雑なメソッドがあります。

クラス Matrix の行数を減らすには、どのようなオプションがありますか? クラスが非常に大きくなるのは普通ですか? 私はそうは思いません...これは私が早い段階で検討すべきことであり、リファクタリングは困難ですか?または、簡単な解決策はありますか?

ありがとうございました!


編集:いくつかの回答を読んだ後、次のことを検討しています:

ユーティリティ クラスMatrix には、マトリックスの一般的な/基本的なメソッドがすべて含まれています。

委任クラス (ヘルパー/サブ):

*ヘルパー クラス* getGaussian(..)、getLUFactorization(..)、...

サブクラス (Matrix を拡張) SquareMatrix、LowerTriMatrix、UpperTriMatrix、...

委任は、C++ でヘッダーを含む複数の .cpp ファイルを定義することに似ています。さらなるヒントは大歓迎です。


Edit2: また、クイックフィックスではなく、適切に設計してリファクタリングすることをお勧めします。今回だけでなく、将来のプロジェクトに役立つことを願っています。

0 投票する
10 に答える
90692 参照

cohesion - 高結束とは? 使い方・作り方は?

私はコンピュータープログラミングを学んでいて、いくつかの場所で結束の概念に出くわしました。ソフトウェアが「高い結束」を持つことが望ましいことは理解していますが、それはどういう意味ですか? 私は Java、C、および Python のプログラマーで、C++ Primer という本から C++ を学んでいます。この本では、まとまりについて言及されていますが、索引には含まれていません。このトピックに関するリンクをいくつか教えていただけますか? ウィキペディアのコンピュータ サイエンスの結束に関するページは、定性的な尺度であり、実際のコード例を示していないため、参考になりませんでした。