質問

私は、非常に複雑で多くのビジネス ロジックを含む Android プロジェクトで guice を使用することについて議論しています。Guice は適切に思えますが、深く読み始めると、必要以上に複雑に見え始めます。

私が理解できないことの 1 つは次のとおりです。Guice がそれほど優れており、Java コードを記述するための最良の方法であるなら、Guice を使用する Android コードがこれほど少ないのはなぜでしょうか...そしてなぜ Google は社内で Android 用に Guice を使用しなかったのでしょうか?

役に立ちましたか?

解決

依存関係インジェクションフレームワークの強みを実証することの問題は、シンプルなHello Worldアプリケーションでそれを達成することができないことです。これらのフレームワークは、多くの複雑さを備えた大きなシステムでのみ価値を示しています。また、彼らは何らかの形で急な学習曲線を持っています。

したがって、十分なチュートリアルを見つけることができないことは非常に普通です - Guiceを使用するオープンソースプロジェクト。これは、公開されないエンタープライズアプリケーションで最も頻繁に使用されます。

GoogleがGuiceを使用しない理由として、Guiceはどこにでも収まりません。パフォーマンスのオーバーヘッドを追加し、必要ない場所で使用することは意味がありません。

他のヒント

Guice を使用するのは完全に理にかなっていて、実際に多くのアプリケーションで使用されています。拡張機能 RoboGuice は、Android の使用を非常に生産的にするいくつかの優れた機能を追加します。

実際、これなしで Android アプリを作成することは想像できません。痛すぎる。

Web サイトで Roboguice を使用するアプリへのリンクを確認してください (例:Google ドキュメント、OpenTable...)。また、Square アプリのような他のアプリも Guice を直接使用することが知られています。

それは完全に理にかなっています..行ってやってみろ!

Robolectric と併用すると、テスト作業も容易になります。

追伸:私は RoboGuice のコミッターなので偏屈です ;-)

PPS - 2013 年 6 月:最近の開発により、ビルド時にほとんどの作業を実行するため、ランタイム リフレクションによるパフォーマンスへの影響 (Android では遅い) が回避され、パフォーマンスが重要な作業により適した他のアノテーション/依存性注入ベースのフレームワークが誕生しました。興味がある場合は、Dagger と AndroidAnnotations を参照してください。

実際、Googleは、メモリオーバーヘッドのためにAndroidアプリケーションでGuiceまたはRoboguiceを使用していることを思いとどまらせています。

ソース:

http://developer.android.com/training/articles/memory.html#dependencyinjection

5.11.2014編集:

Android用の専用の高速依存噴射ライブラリがあります。私はそれを使用している人々をますます見ることができます:

http://square.github.io/dagger/

13.04.2015編集:Googleは独自のバージョンのDaggerをリリースしました。http://google.github.io/dagger/

あなたはあることを知っています roboguice? AndroidのGuiceです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top