Olá, no curso é abordado o uso do Dagger 2, framework de DI para android.
Eu venho do Java EE e Spring e já tive um bom contato com outros frameworks de DI e IoC.
A questão é que eu sinceramente achei o Dagger cheio de boilerplates, eu entendo que é porque ele não usa reflection e é mais performático, mas...
No exemplo do curso temos apenas uma acitivity, então a complexidade é muito pequena, no entanto eu tenho um projeto com mais de 50 activities e fragments e quando você leva para esse cenário aplicar o Dagger parece que traz mais verbosidade.
Exemplo de situações:
Para cada activity ou fragment eu preciso criar a interface component ou então criar uma e declarar o inject para todas os pontos de injeção, em alguns momentos vários, em alguns casos criar vários modules também. No fim do dia acabo tendo 1 module + 1 component para cada activity.
Além dos itens acima, em cada lugar que quero injetar (activities por exemplo), eu preciso fazer a amarração com a interface component no onCreate, tendo que recuperar o component via application, o que no meu ponto de vista acaba criando mais acoplamento. Para piorar preciso repetir esse processo isso em todas essas activities.
Para tentar melhorar esse cenário eu tentei fazer classes genéricas e declarar os modules e componentes para tentar um reaproveitamento, mas sem sucesso, justamente pelo comportamento de injeção em tempo de compilação do Dagger.
Por fim, acabo tendo a sensação de que é melhor instanciar as classes da forma comum, pois o ganho de desacoplamento e reuso é muito pequeno em relação ao tanto de configurações e boilerplates necessários.
-
Gostaria de saber a experiência de outros devs em relação a esse problema e se por acaso alguém tem dicas ou exemplos de arquiteturas bem elaboradas com esse framework (que vá além do helloworld).