問題タブ [coupling]
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.
.net - ORM-SQL Server 2008+for.NETに固有
MS SQL 2008+に関連付けられ、MS SQL固有の機能を利用する.NETコードを生成するORMはありますか?
私は特に2つの機能に興味があります:
(1) 「selectin」クエリにマップされないキーでレコードのグループをフェッチします。-これは、2005以降または2008以降のテーブル値パラメーターを使用
して実現できます。OPENXML
(2)DBへの単一の要求で複数のレコードを挿入します(これはBulk-Insertと似ていますが、同じではありません)。例えば:
したがって、SQL関連のコードはクライアントで準備され、SQLサーバーに完全に送信されます。
ところで、ストアドプロシージャは問題外です。
あなたがstackoverflowersが私に何かアドバイスをしてくれたら嬉しいです。
ありがとう!
アップデート:
ニーズに合わせてカスタマイズできる拡張可能なフレームワーク/製品ではなく、完全なソリューションを探しています。したがって、NHibernate / linq2sql/etcをカスタマイズします。私自身のコード実装を書くことは私のニーズに合いません。
受け入れられた答えについてのいくつかの言葉。
現在、すべてのORMフレームワークが複数のデータベース/テクノロジーをカバーしようとしているようです。ですから、私のニーズに対応できる解決策はなく、少なくとも箱から出してすぐに使えるものはないと思います。
Fluent NHibrenateを指す@Rykは、そのようなソリューションが実際に存在すると信じており、それは構成の問題であることを理解しています。NHibernateとFluentNHibernateの両方のソースコードを調べましたが、探している機能をサポートするものは何も見つかりませんでした。たとえば、キーワードOPENXML
またはsp_xml_preparedocument
両方のソースコードが見つかりませんでした。何かが足りないかもしれませんが、そうは思いません。賞金には期限がありますので、FNやNHでこれ以上詳しく調べることはできません。これらの機能はまだサポートされていないと思います。
ですから、受け入れられた答えは、私の最善の理解によれば、そのようなことはないということです。それを主張する最も一般的な答えは、@CadeRouxの答えです。
皆様のご参加ありがとうございました。乾杯!
c++ - 低カップリングと緊密な結束
もちろん状況にもよります。しかし、下位レベルのオブジェクトまたはシステムが上位レベルのシステムと通信する場合、上位レベルのオブジェクトへのポインターを保持するよりも、コールバックまたはイベントを優先する必要がありますか?
たとえば、ゲームに取り組んでいる場合world class
、メンバー変数を持つ がありますvector<monster> monsters
。monster class
が と通信する場合world class
、コールバック関数を使用する方がよいですか、それともモンスター クラス内のワールド クラスへのポインタを使用する必要がありますか?
java - あるクラスが多くのメソッドを持つ別のクラスで 1 つのメソッドのみを呼び出す場合、カップリングを減らす方法は?
MyService
コンストラクターで2つの依存関係を受け入れるクラス(と呼びましょう)があります。最初のものは、質問に関連するすべてではありません。二つ目はPaymentDetails
. PaymentDetails は、この特定の要求を処理するためにファクトリによって作成される MyService よりも長く存続します。
ではMyService.process()
、次のことを行います。
- 最初の依存関係でいくつかのことを行い、
- オブジェクトを構築し、その
new TransactionDetails()
上にさまざまなものを設定します。 - 通話
myPaymentDetails.setTransactionDetails( td );
- ウィザードのどのページが次に続くかを示す何かを返します
PaymentDetails
必然的に多くのメソッドがあります。これは、ユーザーが一連の約 5 ページをステップ実行するときに情報が構築される Entity スタイル オブジェクトです。
私を悩ませているのは、書かれているように、私のサービスクラスはの全体に依存しているが、PaymentDetails
1 つのメソッドしか呼び出していないことです。
これは私を悩ませます:
- サービスクラスを再利用する機能が制限されます
- メソッドのシグネチャを読んでも、実際の依存関係が何であるかを理解することはできません
私の質問は:
これを修正して、サービス クラスの依存関係を最小限に抑える最善の方法は何ですか?
c++ - カップリング - C++ Web または GUI デスクトップ アプリ
高度な C++ アプリケーションでカップリングを処理する方法は?
(例えば) Witty で書かれた Web アプリケーション用の完成したコードを使用して、コンソール アプリケーションを作成することはできますか? …それとも Qt で作った GUI でデスクトップアプリに変更?
はい/いいえ、なぜですか?
それを最も可能かつ簡単にする方法は?
design-patterns - オブジェクトの結合
クラスA、B、およびCのそれぞれdoA()、doB()、およびdoC()のメソッドがあると仮定します。
私が間違っていない限り、doA() メソッドはクラス A に属している必要があります。クラス A から実行する必要があります。A の責任を負うメソッド doA() がクラス B に存在する場合、クラス A は B のサービスに結合されています。 . これはまた、凝集度が低く、結合度が高いことを表しています。
私の推論は正しいですか?
design-patterns - 低結合をサポートする設計はどれですか?
全体的な低結合をサポートする設計はどれですか? なぜ?
oop - パッケージの安定性の指標ですが、特定のクラスの場合はどうでしょうか。
不安定性(I)メトリックによって、パッケージが別のパッケージに依存する必要があるかどうかを知るために使用できる、RobertMartinによって定義されたパッケージ安定性メトリックに類似したメトリックがあるかどうか疑問に思います。
ただし、クラスの場合、パッケージ内のクラスと他のパッケージ内のクラスとの間のAfferentおよびEfferentカップリングではありません。それらは、同じパッケージ内のクラス間の求心性および遠心性の結合(多分および/または他のパッケージ、私は本当に知りません)、その「不安定性」によって、クラスが別のクラスに依存するべきかどうかを知らせます。
編集:おそらく、不安定性メトリックは変更する理由を測定します:比率を変更しない理由ですが、私が考えると、クラスには変更する理由が1つだけあるはずです。つまり、そのような同様の不安定性メトリックが存在する場合、クラスは0になりますが、それでも、一部のクラスは他のクラスのオブジェクトインスタンスを「使用」し、それらをそれらのクラスに依存させます。しかし、私はこれについて確信が持てません、これに関する洞察はありますか?
components - オプション コンポーネントの機能と SRP の比較
現在発生している設計上の問題があります。
コンポーネントの階層があるとしましょう。これらの各コンポーネントは、次のComponent
ような抽象型から派生します。
ここで、これらのコンポーネントにいくつかのオプション機能を追加したいと思います。例として、コンポーネント階層内で検索し、階層内でコンポーネントを選択できるようにしましょう。
次のような基本クラスでこれらのオプション機能を提供することは悪い習慣と見なされますか?
「検索機能」と「選択機能」は、たとえば戦略パターンを使用して派生コンポーネントで管理されますか?
どういうわけか、これは SRP に違反しているように思えますが、私の意見では、唯一の代替手段は、各オプション機能のインターフェイスを持ち、この機能をサポートするコンポーネントにのみ実装することです。
私の意見では、これには、コンポーネントが特定の機能を提供するかどうかを確認するたびに、このようなコードを書かなければならないという欠点があります。
どちらの戦略を選択しますか、またはより良いアイデアがありますか?
前もって感謝します!
oop - DRYを踏襲しながらカップリングを低く抑える
「高い結束と低い結合を維持する」(またはその変形) というマントラが頻繁に使われます。しかし、「同じことを繰り返すな」と矛盾することがよくあります。
たとえば、std::string
C 文字列を再実装したり使用したりするのは悪いことだと誰もが同意できると思いstd::string
ます。
別の例として、 を取り上げstd::stringstream
ます。から継承しiostream
、から継承istream
し、ostream
から継承しios
、 から継承しios_base
ます。これらすべての派生を通じて、多くの機能を継承しています。手作業で再実装するのは非常に悪い考えです。<ios>
また、ヘッダーと<istream>
ヘッダーのみが含まれていてもプルするため、<sstream>
カップリングが増加します。
モジュールごとに車輪を再発明することなく、結合を低く保つにはどうすればよいでしょうか?
編集: 2 つの概念が共存できない場合、どちらを優先する必要がありますか?