¿Qué arquitecturas para Android hay? Ventajas y desventajas
Para ser un programador android todo terreno, definitivamente tenemos que aprender sobre las arquitecturas para android que existen, y qué ventajas nos dan. Primero que todo, respondamos a una pregunta básica.
¿Qué es una arquitectura?
En resumen, es un conjunto de soluciones que estructuran un proyecto de forma ordenada, contempla varias cosas para su formación, como patrones de diseño, librerías, principios de programación, organización de carpetas, clases, y desde luego, todo pensando en la plataforma que se vaya a usar, por ejemplo, Android.

¿Qué ventajas tiene usar arquitecturas?
Aunque hay muchas ventajas al implementar arquitecturas para android, vamos a listar las más sobresalientes a la hora de tomar una desición.
- Reciclaje de clases o módulos. Cuando tenemos una arquitectura robusta, no solo podemos reciclar código en el mismo proyecto, en ocasiones podemos extraer y adaptar algún módulo en otro proyecto, dependerá de qué tan parecidos sean los requerimientos claro, pero será relativamente fácil hacer una migración solida.
- Reducción de documentación dentro del código. En lugar de comentar nuestro código en cada línea, o crear documentos por separado, una buena arquitectura hará nuestro código legible y entendible por su misma ubicación, nombramiento, y conexión.
- Curva de aprendizaje menor en equipos de trabajo. Una vez que varios programadores aprenden la misma arquitectura, cualquier proyecto puede ser modificado por cualquier programador del equipo, con la misma calidad qué el programador original.
- Fácil ubicación de errores, y reducción de los mismos. Entre más clases y métodos pequeños haya en un proyecto, menor será la cantidad de errores, pues solucionaremos todo engrane por engrane, en lugar de abrir el cofre y ver cientos de piezas. Ademas de un rastreo fácil, al punto de que cuando un veas el error en la interfaz, sabrás qué camino vigilar.
- Software escalable. Es decir, un proyecto que fácilmente añade nuevas funciones y vistas, sin afectar el resto.
- Mantenimiento seguro y flexible. No hay mucho mas que decir, mas claro, agua.
- Mejoras en el testing. Una de las mayores ventajas, incluso si aún no implementas pruebas automatizadas en tus proyectos, tendrás todo preparado para cuando quieras llegar a ese nivel de profesionalidad.
¿Qué desventajas hay?
De nuevo, aunque puede haber más, solo vamos a listar las más importantes para decidir si debemos o no implementar arquitecturas de software.
- Mayor tiempo al crear código nuevo. Sobre todo al principio puede resultar perezoso crear varias lineas de código para una consulta nueva a la base de datos, o crear un módulo nuevo solo por un dialogo de selección o confirmación, por ejemplo.
- Mayor curva de aprendizaje para integrarse a un proyecto. Es común que muchos buenos programadores, incluso con varios años de experiencia, no sepan usar correctamente ni las arquitecturas más sencillas, por lo que será necesario capacitar a todos los programadores que se unan al equipo en este tema de las arquitecturas.
La buena noticia es que ambas desventajas son de una única vez, en el sentido de que una vez dominada la arquitectura elegida, el flujo de trabajo es ágil, y es un ahorro de tiempo a largo plazo, a diferencia de los grandes problemas que tendríamos si no ocuparemos arquitecturas.
¿Qué arquitecturas de software existen para Android?
Como ya lo mencionamos antes, una arquitectura esta comprometida directamente con la plataforma a la que va dirigida, y esto contempla el lenguaje de programación usado.
Para el caso de Android, tenemos 2 lenguajes principales, Java y Kotlin, pero Java cada día esta en mayor desuso, por lo que vamos a listar solo aquellas arquitecturas que al día de hoy, están disponibles para Kotlin.
- MVP(Modelo-Vista-Presentador)
- MVVM(Modelo-Vista-VistaModelo)
- MVI(Modelo-Vista-Intención)
- Recommended Architecture(Basado en MVVM)
No he listado una de las más populares, me refiero a la Clean Architecture, y no la he puesto en la lista principal porque como tal no es una arquitectura, mas bien es un conjunto de guías que pueden aplicarse a las arquitecturas antes mencionadas.

¿Qué sigue?
Te invito a profundizar en qué consisten las diferentes arquitecturas para android aquí: https://alainnicolastello.medium.com/cual-es-la-mejor-arquitectura-para-android-con-kotlin-477b30c20e2a
Si te interesa saber más sobre el origen de las arquitecturas para android(o en general para otras plataformas), su importancia, y en qué consisten cada una de las variantes disponibles, te invito a leer el siguiente articulo: https://medium.com/@alainnicolastello/son-necesarias-las-arquitecturas-de-software-7184b2704a19
Así podrás tomar la decisión final sobre cual arquitectura para Android elegir.
También puedes ver las primeras clases gratis sobre el curso en español, mas completo sobre las arquitecturas para android, compatibles con XML y Jetpack Compose: https://www.udemy.com/course/arquitecturas-para-android-kotlin-avanzado-mvvm-mvp-clean-mvi/?referralCode=59F918F95E5777CD6641
Cupones para todos los cursos de android: www.alainnicolastello.com
Fuerte abrazo!
Ing. Alain Nicolás Tello.
Cursos ANT.