android dependency-injection roboguice dagger transfuse

¿Cuáles son los beneficios específicos de usar DI en Android?



dependency-injection roboguice (1)

¿Cuáles son los beneficios o ventajas específicos de usar un marco de inyección de dependencias para Android, como Dagger , Transfuse o RoboGuice ?

Por ejemplo, ¿qué tipo de aplicaciones se beneficiarían más con el uso de DI? ¿Hay más de una ventaja de rendimiento, o se trata más de la facilidad de extender una aplicación, o incluso más acerca de cómo hacerlo comprobable?

Una de las razones para preguntar esto es evaluar si una aplicación que estoy desarrollando realmente se beneficiará de ella o no mucho. Dado que pretendo que la aplicación sea seria en algún momento, la capacidad de prueba y la facilidad de extensión sería excelente, incluso si es costoso de usar (más tiempo de configuración, curva de aprendizaje, etc.) para las primeras versiones.

¡Gracias!


Por ejemplo, ¿qué tipo de aplicaciones se beneficiarían más con el uso de DI?

La inyección de dependencia (como un patrón, no una biblioteca) beneficia a casi todo el código.

  • Promueve el diseño de componentes modulares que exponen solo las API necesarias para realizar una acción específica. Cuando se ve obligado a dividir piezas de sus aplicaciones, debe tener en cuenta la cantidad de detalles de implementación para exponer, cómo se comporta la API y la visibilidad de las clases y los métodos.
  • Promueve abstracciones lógicas de componentes (piense: interfaces y sus implementaciones). Ciertamente no tienes que hacer esto, pero termina ocurriendo orgánicamente de todos modos cuanto más DIs cosas.
  • Facilita la capacidad de prueba mediante la creación de un único punto de consumo de tipo a través del cual una clase obtiene algo que necesita. ¿Necesita cambiar un Foo por un TestFoo ? No hay problema.

¿Hay más de una ventaja de rendimiento?

No. Las bibliotecas de inyección de dependencia existen únicamente para reducir la repetición del patrón y aumentar la capacidad declarativa para solicitar dependencias.

¿Es más sobre la facilidad de extender una aplicación?

Absolutamente. Aunque nunca recomendaría usar Guice (o RoboGuice) en una aplicación de Android, la charla introductoria a Guice de Google I / O es una introducción fantástica a por qué la inyección de dependencia es importante en este sentido.

¿Aún más sobre hacer que sea comprobable?

Si y no. Este es un feliz efecto colateral de abstracción y modularización adecuadas. Las pruebas son una gran cosa, por lo que el hecho de que la inyección de dependencia ofrezca facilidad también es excelente.

Recientemente di una charla sobre Dagger en el contexto de Android, que puedes ver * o ver las diapositivas . La charla comienza con la inyección de dependencia como un patrón y luego pasa a la forma en que Dagger reduce el texto estándar y también permite algunas características geniales.

También hice una aplicación de muestra bastante avanzada que aprovecha Dagger para casos de uso de inyección complejos que también podría valer la pena examinar.

* La charla actualmente no es gratuita, pero llegará a ser así en algún momento en los próximos 10 meses.