¡Si no pudiste asistir al evento del día 23 de febrero y quieres saber qué es la Modularización, éste es tu artículo!
Si hablamos de modularizar nos referimos a la práctica de organizar nuestra base de código en pequeñas partes o módulos que deben contener las siguientes características:
Es lo primero que debemos preguntarnos a la hora de comenzar un proyecto, y con estos puntos que detallaremos a continuación nos haremos una idea de porqué hacerlo.
Como toda decisión que tomemos, deberemos tener en cuenta una serie de factores a la hora de modularizar nuestro código.
- Si tenemos una gran cantidad de módulos pequeños en los que vemos que nuestro código se repite sin apenas variación quizá esta separación no tenga sentido y debamos plantearnos unificarlos.
- Por el contrario, si nuestros módulos son demasiado grandes y se convierten por sí mismos en aplicaciones monolíticas deberemos plantearnos el dividirlos.
Antes comentamos esta característica y ahora vamos a entrar un poco en detalle con ella.
Por hacer un poco de memoria, recordemos que Google Play hace uso de los Android App Bundle o AAB para generar APK personalizados para la configuración del dispositivo de cada usuario, de tal manera que se descarguen solo los recursos y código necesarios para la ejecución de la app.
Play Features Delivery va más allá y permite que ciertas funcionalidades de la APP se entreguen de manera condicional o a petición. Para poder conseguir esto lo primero que debemos hacer es tener dichas funciones separadas en módulos.
Esto ofrece algunas ventajas como la mejora de la velocidad de compilación o de ingeniería, además de la mejora del tamaño de la aplicación. Aunque también trae consigo algunas limitaciones que se deberán tener en cuenta y que son las siguientes:
Bien, hasta este punto tenemos claro que los módulos han de ser independientes y no saber nada entre ellos, pero tendrán que compartir información para poder trabajar juntos, ¿no?
Existen varías estrategias que podemos usar para solucionar este punto y que veremos a continuación:
Llegados a este punto verás que no hay una única manera de modularizar, al igual que existen diferentes arquitecturas para nuestra aplicación, existen muchas maneras de dividir nuestro código, en lo que sí podemos estar de acuerdo es que hay que tener en cuenta los siguientes puntos para tener un código legible y mantenible:
Tras todo lo hablado sobre modularización, es buen momento para echar un vistazo a los tipos existentes, esto nos permitirá elegir cuál es la más conveniente para nuestro proyecto.
Se divide en 2 capas básicas, UI y Data, siendo Domain opcional, teniendo cada una de ellas una responsabilidad específica
Veamos qué hace cada una de ellas:
Por poner un ejemplo de la importancia de tener una buena modularización imaginemos que tenemos una aplicación con el sistema de vistas clásico en XML y decidimos cambiarlo a Compose, si todos nuestros módulos están correctamente separados y no existe acoplamiento entre ellos con cambiar el módulo de UI por el nuevo módulo con Compose sería suficiente, ¿interesante verdad? Intenta imaginar esta misma situación con una aplicación monolítica, la cosa se complicaría.
Por el contrario, habría que tener cuidado con las dependencias que pudiera haber entre módulos, ya que podría existir la necesidad de compartir información entre ellos.
También existen algunos problemas
El proyecto puede volverse complejo ya que hay que administrar múltiples módulos y gestionar sus configuraciones, además es conveniente tenerlos actualizados en la medida de lo posible, lo cual genera un esfuerzo adicional para que todos los módulos estén siempre funcionando correctamente de manera conjunta.
Se recomienda su uso en proyectos grandes con muchos desarrolladores.
Con esto terminamos este artículo, como verás no hay ni mejores modularizaciones ni peores, como desarrolladores, deberemos evaluar el proyecto y las necesidades de este, para poder tomar una decisión según los pros y contras de cada una de ellas y usar la que más se ajuste a él.