依存性注入フレームワークはテストのためだけに使用されているのか、それとも実動コードで使用されていますか? ninjectのようなフレームワークを使い始めると、すべてを逆にしたくないと思われます。また、ninjectのようなものを使用するとパフォーマンスが低下しますか?テストまたは生産のための依存性注入?
1
A
答えて
2
依存性注入はテストパターンではなく、アーキテクチャパターンです。したがって、生産コードを作成するときに使用することを意図しています。実際には、本当に良いフレームワークであれば、非常に小さなオーバーヘッドが導入されます。 ninjectや団結がそうであれば、私は自分自身を実装するために使用されたかどうかについてはっきり言うことはできません。
DIの可能な本物の欠点は、ほとんどがコーディングプロセスの周りであり、生産のパフォーマンスではありません。おそらく言及されるべきである:DIを使用するときには、「Go to Definition」を使ってコードを歩く能力を失う。それは、常に論理的だが使えないインターフェースにつながる。
1
DIを実稼働環境で使用することは間違いありません。テスト環境では、テスト目的のために物事を結ぶだけでいいです。実際にはモックオブジェクトを使用している場合、にはがあります。
1
すべてに使用してください!それを逆にするのはなぜですか?質の高いフレームワークのパフォーマンスは、起動時にのみ発生するはずです。さらに、VMが余分なレイヤーをインライン化できるようになるまで、わずかなペナルティが発生する可能性があります。いずれにしても、バグが減少し、開発者の生産性が向上します。
DIは特に生産に適しています。私たちのソフトウェアでは、私たちがテストで行ったのとまったく同じ構成をプロダクションで使用しています。
テストが実行されると、テスト設定では特定のサービスが偽装されているとフラグを立てるだけです。これは、テスト構成があることを意味します
- リストが出て、様々な方法が出て嘲笑サービスメソッドを呼び出しの戻り値を指定するサービス
- を嘲笑します。
テストの利点:生産と試験の間
- なし設定の違いは
- サービスもTestクラスに注入される潜在設定依存不具合の可能性を意味しません。
- テスト構成は些細なものです(サービスが模擬される場合にのみ必要です)
- テスト構成は常に本番と同じです。 (維持しやすい)
- サービスの初期化は決してマニュアルではなく、ハッキングされています。
生産の利点:
- クリーンコードを起動していない -
- 循環依存関係が問題になることはありません何のハードコーディングされた依存関係。
- サービスのローカルコピーを無効にし、要求を別のボックスにルーティングする機能。 (バックグラウンドバッチタスクで使用)
関連する問題
- 1. 依存性注入と開発生産性
- 2. 依存性注入を使用した依存性注入器の注入
- 3. 依存性注入構成のテスト
- 4. OSGiとテストの依存性注入
- 5. サービスファブリックユニットのテストと依存性注入
- 6. 依存性注入とテストの倍数
- 7. 依存性注入
- 8. 依存性コンテナ注入のためのクラスのマーケティング
- 9. ユニットテストのためのオプションの依存性注入
- 10. 依存性注入を使用したカスタムメンバーシッププロバイダ - テスト方法
- 11. Zend Framework依存性注入対Symfony2依存性注入
- 12. 春の依存性注入
- 13. Groovyの依存性注入
- 14. MVCの依存性注入
- 15. 依存性の注入
- 16. XPCOMの依存性注入
- 17. コンストラクターの依存性注入
- 18. 依存性注入のクエリ
- 19. ダイナミックランタイム依存性の注入
- 20. EJB3 Beanまたはランタイム依存性チェックのオプションの注入
- 21. Asp.Net MVC3またはMVC4でのNinject依存性注入
- 22. Grailsの依存性の注入は
- 23. Wcf依存性注入
- 24. CA2000と依存性注入
- 25. ASP.NETモジュール依存性注入
- 26. 依存性注入ライフサイクル
- 27. PHPファクトリパターン依存性注入
- 28. カスタムResourceProviderFactory依存性注入
- 29. アダプターと依存性注入
- 30. 春:セッター依存性注入
「定義に移動」の代わりに、ReSharperをインストールし、ctrl-alt-bを押します。 –