私はクラスをリファクタリングし、それに新しい依存関係を追加しています。クラスは現在、コンストラクタ内に既存の依存関係を取っています。したがって、一貫性のために、コンストラクタにパラメータを追加します。
もちろん、単体テストにはいくつかのサブクラスがあります。今は、すべてのコンストラクタを一致させるように変更するというゲームをプレイしています。
私は、セッターでプロパティーを使うことは、依存関係を取得するより良い方法だと思います。私は、注入された依存関係は、クラスのインスタンスを構築するためのインターフェースの一部でなければならないとは思わない。依存関係を追加すると、すべてのユーザー(サブクラスとあなたを直接インスタンス化するすべてのユーザー)が突然それについて知ります。カプセル化が途絶えるような感じです。コンストラクタまたはプロパティセッターによる依存性注入?
これは既存のコードのパターンではありませんので、一般的なコンセンサスが何であるか、コンストラクタとプロパティの賛否両論について調べていきたいと考えています。プロパティーセッターを使用していますか?
多くの場合、Nullオブジェクトパターンを使用し、コンストラクタで参照を要求することが望ましい場合が多いと思います。これにより、すべてのヌルチェックと増加した循環複雑性が回避されます。 –
@マーク:良い点。しかし、問題は既存のクラスに依存関係を追加することでした。引数なしのコンストラクタを保持すると、下位互換性が得られます。 – sleske
機能するために依存関係が必要なときはどうでしょうか?その依存関係のデフォルト注入で十分です。そして、その依存関係は、プロパティまたはコンストラクタのオーバーロードによって「オーバーライド可能」であるべきですか? –