web-dev-qa-db-ja.com

AndroidアプリケーションでDaggerを使用するのはいつですか?

Daggerが依存性注入フレームワークであることは知っていますが、自分のプロジェクトではまだ使用していません。

私は新しいプロジェクトを始めて、ダガーがそれに適しているかどうか疑問に思っています。私が理解している限り、Daggerを使用すると、多くの定型コードと注釈が作成されます。ですから、それが私の比較的単純なプロジェクトのやりすぎではないかどうかはわかりません。

プロジェクトについて少し。画像処理に焦点を当てており、機能の主要部分はそれを中心に構築されています。ただし、データストレージ用のシンプルなバックエンドもおそらくあります。

一般的に、プロジェクトでDaggerを使用するかどうかを選択するために使用できるいくつかの基本原則を知りたいと思います。

33
Sergey Novikov

基本的な理解:

クレジットカードサービスを扱うアプリケーションをテストするとします。テストの目的で、実際のRPCCreditCardServiceにアクセスしたくない場合があります。これは、開発中に実行したくない実際のトランザクションやその他のものを必要とするためです。その場合、実際のCreditCardServiceが実行するのと同じことを模倣しますが、何も処理しないクローン偽のサービスを作成する必要があります。依存関係注入フレームワークを使用する場合、依存関係で一般的なタスクを定義し、それを偽のサービスと実際のサービスの両方に注入できます。コーディングの複雑さを最小限に抑え、各モジュールを独立させるのに役立ちます。

ドキュメントから:

依存性注入フレームワークを使用することで、各クラスを簡単にテストできます。 RpcCreditCardServiceをFakeCreditCardServiceに交換するためだけに、ボイラープレートの束は必要ありません。

依存性注入はテストだけではありません。また、再利用可能な交換可能なモジュールを簡単に作成できます。すべてのアプリで同じAuthenticationModuleを共有できます。また、開発中にDevLoggingModuleを実行し、本番環境でProdLoggingModuleを実行して、各状況で適切な動作を実現できます。

参考:

詳細については、 このディスカッション を確認してください。

28
Mohammad Arman