MVVM vs MVP
El desarrollo en Android ha ido madurando con el paso de los años, y como toda buena plataforma, al poco tiempo los desarrolladores comenzaron a preguntarse qué patrones de diseño podrían plasmar, en este nuevo paradigma.
El primer patrón popular y lo suficientemente robusto, fue MVP(Model-View-Presenter), derivado del popular MVC, otro patrón muy común en diferentes lenguajes de programación orientados a objetos, MVP es fácil de implementar y con mucha flexibilidad para trabajar en armonía con otros patrones y arquitecturas.
Pero luego nació MVVM(Model-View-ViewModel), de la mano de Microsoft, pero que se adaptó en Android y tuvo una gran aceptación, hoy en día es, incluso recomendado por el equipo oficial de Android, ya que su Arquitectura de componentes se basa en MVVM.
A lo largo de mi experiencia como desarrollador Android, y en base a las preguntas que me dejan mis alumnos en Udemy, a continuación te responderé algunas de las preguntas más frecuentes con respecto a que patrón es mejor para Android, comencemos con la más básica:
¿Es necesario implementar un patrón de diseño en mis apps?
Mi respuesta: Como tal no, no es necesario para poder desarrollar, pero si quieres hacerlo de forma profesional, si tu objetivo es trabajar en equipos de desarrollo donde exista armonía a la hora de asignar tareas para corregir errores, entender el código de otros, o refactorizar ciertos módulos/capas/etcétera… Entonces si, claro que deberías aprender a utilizar patrones de diseño.
¿Qué patrón de diseño debo utilizar?
Mi respuesta: Cualquiera que se adapte a tus necesidades, cada empresa, incluso cada proyecto, tiene ciertas caracteríscticas que podrían definir hasta que punto les ayudaría implementar patrones de diseño, para proyectos pequeños, 1 o 2 están bien, para grandes proyectos 4 o 5 podrían solventar problemas con mayor eficacia. Para el caso de Android, los grandes patrones que funcionan como columna vertebral, son MVP y MVVM, ambos tienen resultados asombrosos si se implementan con buenas prácticas.
¿Es MVVM el mejor patrón de diseño para Android?
Mi respuesta: Si y no, el “NO” es debido a que hay otras arquitecturas que funcionan muy bien, como ya mencionamos antes, MVP es una alternativa viable, y si ya estas aplicando algo con repository o incluso combinado con clean, puedes mantenerte sin problema. Pero… Hay un gran pero, el “SI”, es porque MVVM es el patrón de diseño más popular para android hoy en día, y es impulsado por el mismo Google, es más amigable con android Jetpack, así que sí, podríamos decir que es el más indicado para implementar de cara al futuro.
Con todo lo anterior, podrías decir: Vale, me interesa saber más sobre estos patrones, ¿Cuál es el primer paso?
Si quieres aprender un poco más, a continuación de dejo unas breves descripciones de MVVM y MPV respectivamente.
¿Qué es MVVM?
Bueno, básicamente es un patrón de diseño que separa tu código en capas, desde la vista, los datos y la lógica de negocio o casos de uso. La View no tiene lógica, solo muestra información y reacciona a las acciones del usuario, Model consigue los datos y puede contener lógica del negocio, ViewModel es el intermediario, se comunica con View y Model, la diferencia es que con View lo hace de acuerdo al patrón observable.
Si te interesa el tema, te invito a ver el siguiente vídeo, en 4 minutos sabrás todo lo elemental de MVVM, como funciona y más:
¿Que es MVP?
Similar a MVVM, pero aquí si se conecta directamente el presentador a la vista, aunque lo ideal es hacerlo a través de interfaces, de esta forma mantenemos las capas abstractas, esto aplica para todas las conexiones de este patrón.
Si te interesa saber a detalle como trabaja MVP, te comparto el siguiente vídeo y en 8 minutos, no te quedará duda de como funciona a detalle:
A simple vista, parecen ser muy similares, y de hecho, ¡En principio lo son! Pero a la hora de implementarlos, si que tienen sus particularidades que nos obligan a implementar más cosas que sin duda, hacen evidente su gran diferencia a la hora de codificar… Sin embargo, como ya se mencionó antes, los resultados de cada uno son realmente buenos si se respetan sus principios, así que si tu ya usas MPV o MVVM, no tienes porque migrar al otro, no por necesidad, pero quizá si por subir tu nivel de conocimientos, o por algún trabajo donde te exijan trabajar con más de un patrón de diseño.
Conclusión:
Como recomendación personal, y basado en mi experiencia, te diría que dependiendo de tu posición, elijas cual de los siguientes escenarios se acomoda mejor a tu situación actual para comenzar:
Soy nuevo en android: MVVM.
Conozco MVC: MVP.
Conozco android pero solo con Java: MVP.
Sé android con Java y Kotlin: MVVM.
Solo sé android con Kotlin: MVVM.
Quiero buscar trabajo como desarrollador android: MVVM, MVP, Repository y Clean.
Y nada, eso es todo por el momento, si te interesa saber más sobre el tema, puedes dejar tus preguntas o indagar en mis redes sociales(búscame como Alaín Nicolás Tello o como Cursos Android ANT), siempre comparto contenido sobre android, así puedes seguir formando tu carrera como un Android Developer.
Ing. Alain Nicolás Tello
Cursos Android ANT