問題タブ [law-of-demeter]
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.
c# - デメテルの法則に従うようにコードを変更する方法
私が電話した場合:
これはデメテルの法則/最小知識の原則に違反していると思いますか?
もしそうなら、内部クラスのプロパティが多数ある場合、どうすればこれを修正できますか?
language-agnostic - 設計上の質問:クライアントはセッションとソケットの両方を作成する必要がありますか?
私には3つのクラスがあります:
- クライアント
- セッション
- ソケット
セッションとソケットの両方がクライアントに依存して、両方のオブジェクトを作成します。
セッションはソケットに依存し、セッションなしではソケットは作成されません。クライアントには、セッションを公開して、ソケットを非公開で作成する機能が必要ですか?
デメテルの法則に違反していませんか?
編集:現在のコード:
これで、セッションがクライアントからソケットを取得する責任を負わず、クライアントがセッションを作成する必要があることがわかりました。
私は正しいですか?
language-agnostic - デメテルの法則と戻り値
デメテルの法則によれば、返されたオブジェクトのメソッドを呼び出すことはできますか?
例えば
$ http-> get()はオブジェクトを返します。これは、M内で作成/インスタンス化されたオブジェクトとしてカウントされますか?(LoDによると)メソッドを呼び出せない場合、この状況にどのように対処しますか?
c# - デメテルの法則違反検索ツール?
デメテルの法則違反の可能性を見つけるためにC#アプリケーションで使用できるツールを知っている人はいますか?誤検知が多く発生することは承知していますが、それでも役立つと思います。特に初期の設計プロセス中。
design-patterns - XML 設定ファイルのクラス表現を渡すとデメテルの法則に違反することに注意する必要がありますか?
階層的に編成された XML ファイルのクラス表現を自動的に生成するツールを使用しています。XML ファイルは、アプリがアクセスできるようにする必要がある設定ファイルです (読み取り専用)。
1 つまたは複数の設定にアクセスする必要があるクラスに最上位ノード (例: AppSettings
) を渡すと、簡単に次のようなコードになる可能性があります。
これはデメテルの法則に対する深刻な違反のようですが、気にする必要があるかどうか疑問に思っています。各クラスに必要な正確な設定のみを渡すために多大な労力を費やすことができましたが、この場合、これらの複数のドットがどのように私を傷つけるのかを理解するのに苦労しています.
自分のコードを自分の XML ファイル形式に密結合すると、将来メンテナンスの問題やその他の問題が発生する可能性がありますか? それとも、これは宗教的に OOP 設計原則に従わないことが理にかなっている例ですか?
spring - デメテルの法則とDAOパターン
私のコードベースを例示するSpring/Hibernate Webサイトのコードのメソッドは次のとおりです。
このメソッドは、findUserById() によって返されるオブジェクトを呼び出しているため、デメテルの法則に違反していると思います。最小知識の原則に従うようにこのコードを変更するにはどうすればよいですか?
c# - デメテルの法則はメソッドにのみ適用されますか?
私が見た LOD の説明 ( WikipediaやC2 Wikiなど) では、メソッドを呼び出さないことが説明されています。ウィキペディアを引用するには:
関数のデメテルの法則では、オブジェクト O のメソッド M は、次の種類のオブジェクトのメソッドのみを呼び出す
ことができます。 - O 自体
- M のパラメーター
- M 内で作成/インスタンス化されたオブジェクト
- O の直接コンポーネント オブジェクト
- グローバル変数、O によってアクセス可能、M のスコープ内
しかし、プロパティ、変数、または列挙型へのアクセスはどうでしょうか? たとえば、次のようになります。
これらの LOD 違反のいずれかまたはすべてですか? (可能であれば、変数への直接アクセスは今のところ無視してください..)
最初の 2 つ (「公式」違反かどうかにかかわらず) は実行しませんが、列挙型についてはよくわかりません。
java - System.out.printlnはデメテルの法則に違反していますか?
System.out.println
デメテルの法則に違反しますか?
そうでない場合、なぜですか?
ruby-on-rails - コントローラをきれいに保つ
コントローラー アクションに渡された params ハッシュに対して実行されるロジックがあるとします。コードを理解しやすくし、コントローラーをきれいに保つために、ロジックをいくつかのメソッドにカプセル化したいと思います。メソッドを Order モデルにクラスレベルのメソッドとして配置できます。ただし、これらのメソッドは実際には Order モデルのドメイン責任の中核ではありません。私の質問は、Rails でこれらのタイプのメソッドを格納するのに最適な場所はどこですか?
php - デメテルの法則は、オブジェクトを返すメソッドを作成できなかったように見えるため、非常に混乱します。
行き止まりになっているような気がします。私がそれを正しく理解していれば、デメテルの法則に従えば、オブジェクトを返すメソッドを作成することはできず、クライアントコードがそれを呼び出します。常にオブジェクトを返すファクトリパターンについて考えています。はい、オブジェクトを返すマッパークラスがあります。そして、コレクションはどうですか?