私が依存性注入(DI)と自動テストの大ファンであることを知っておいてください。私はそれについて一日中話すことができました。
バックグラウンド
最近、私たちのチームは、ゼロから構築するこの大きなプロジェクトを手に入れました。複雑なビジネス要件を持つ戦略的アプリケーションです。もちろん、私はそれが素晴らしくてきれいであることを望んでいました。だから私はDIを使いたかった。
抵抗
問題は私たちのチームにありました、DIはタブーです。それは数回育てられましたが、神は承認しません。しかし、それは私を落胆させませんでした。
私の動き
これは奇妙に聞こえるかもしれませんが、サードパーティのライブラリは通常、アーキテクトチームによって承認されていません(「あなたは指を切らないように、「Unity、Ninject、NHibernate、MoqまたはNUnitについて話さないでください」)。そのため、確立されたDIコンテナーを使用する代わりに、非常に単純なコンテナーを作成しました。基本的には、起動時にすべての依存関係を結び付け、依存関係(コンストラクター/プロパティ)を挿入し、Web要求の最後に使い捨てオブジェクトを破棄します。それは非常に軽量で、必要なことだけを行いました。そして、私は彼らにそれをレビューするように頼みました。
応答
まあ、短くするために。私は重い抵抗に会いました。主な議論は、「すでに複雑なプロジェクトにこの複雑さの層を追加する必要はありません」でした。また、「コンポーネントの異なる実装をプラグインするようなものではありません」。そして、「できる限りすべてを1つのアセンブリに詰め込んで、できるだけシンプルにしたいと考えています。DIは、メリットのない不必要な複雑さです」。
最後に、私の質問
私の状況をどのように処理しますか?私は自分のアイデアを提示するのが苦手で、人々が議論をどのように提示するかを知りたいと思います。
もちろん、私と同じように、DIの使用を好むと思います。同意しない場合は、その理由を言ってください。そうすれば、コインの反対側を見ることができます。同意しない人の視点を見るのは本当に面白いでしょう。
更新
みんなの回答ありがとうございます。それは本当に物事を見通しに入れます。フィードバックを提供するために別の目があれば十分ですが、15は本当に素晴らしいです!これは本当に素晴らしい答えであり、さまざまな側面から問題を見るのに役立ちましたが、私は1つの答えしか選択できないので、トップの投票されたものを選ぶだけです。答えてくれてありがとう。
私はおそらくDIを実装するのに最適な時期ではないと判断し、私たちはその準備ができていません。代わりに、設計をテスト可能にし、自動化された単体テストを提示することに努力を集中します。テストを書くことは追加のオーバーヘッドであり、追加のオーバーヘッドがそれだけの価値がないと判断されたとしても、デザインはまだテスト可能であるため、個人的にはそれを勝利の状況と見なします。また、将来的にテストまたはDIを選択する場合、設計で簡単に処理できます。