DIを再度学習中
こんばんは。ふぇりです。
読書管理アプリをそろそろ完成させてリリースしないと時間かかりすぎだなと最近しみじみ感じております。
今日はDIを導入するべくDaggerを再学習しました。
(DIは後回しにしてアーキテクチャに沿って作って早くリリースしてといわれたらそれまでなんですが....)
DroidKaigiのDBのDIを読ませていただいたのですが、これまたとても勉強になります....
アノテーションなどは理解が全く不足しているのでそこは弁っ供していくのですが、
DaggerHogeComponent.builder()をCompanionObjectにしてActivityに持たせるというのが大体の記事で見ていたりして多い印象を受けたのですが、DroidKaigiのアプリではComponentのほうでCompanionObjectにしていました。
私自身もこの実装の仕方が好きだなと感じていて、理由としては、コードを追っているときに探しやすい点と再利用をする際に機能がまとまっていてやりやすいなと感じたからです。
これに関しては賛否両論あるらしく、Activityに持たせるべきという方もいらっしゃったので、その意見も見てみて自分の中に落とし込んでいきたいと思います。
余談
余談なのですが、qiitaの記事を見ていると、Injectの仕組みが紹介されている記事を発見して読んでいました。
その際にInjectorというクラスにProviderというクラスを渡してInjectorが依存性の注入が必要になったときに、そのインスタンスの値にProviderで作成したインスタンスを注入する。
という処理の流れだと自分は理解しました。
ここから私は、あるインスタンスを作成する際の窓口をDaggerが担ってくれている。
だから、インスタンスの差し替えが容易になってテストがしやすいものになっているのかなと思いました。
mock等も勉強できていないので、DIを一通り導入できたらいったんリリースしてテストコードを書いていこうかな....
(デザイン.....デザイン.....)