Antes de hablar de la arquitectura VIP primero quiero comentarte un poco de la historia

Durante la última década los smartphones y las aplicaciones han pasado a formar parte del día a día de millones de personas en todo el mundo, tanto para uso personal como profesional. Las primeras aplicaciones móviles eran pequeñas y tenían muy pocas lógica, pero esto ha cambiado y ahora las aplicaciones cuentan con interfaces de usuario más completas y con una lógica empresarial más compleja.

La arquitectura MVC cuenta con varios problemas, motivo por el que se ha buscado una forma de poder escalar mejor las aplicaciones móviles. Fue aquí cuando apareció la arquitectura limpia, que fue presentada por Robert C. Martin, la cual comenzó a tomarse con un gran interés por parte de los desarrolladores. De esta forma, se buscaba obtener un acoplamiento reducido en la base del código de la aplicación.

Es importante tener en cuenta que la arquitectura limpia no está estrictamente relacionada con un lenguaje o una tecnología. Al principio los desarrolladores no estaban muy seguros sobre cómo se podría aplicar y aprovechar dentro del contexto de los móviles, hasta que Conrad Stoll mostró la arquitectura VIPER en el artículo “Arquitectura de aplicaciones iOS con VIPER”, convirtiéndose en la primera arquitectura para iOS que estaba inspirada en la arquitectura limpia de Robert C. Martin.

Tiempo después Raymond Law sugirió una nueva arquitectura denominada VIP, que suponía una mejora respecto a VIPER, ya que VIPER realmente no estaba completamente en línea con lo que es una arquitectura limpia.

¿Cuáles son los beneficios de adoptar una arquitectura limpia? Para poder responder a estas preguntas primero tenemos que tener claro en qué consiste la aplicación de una arquitectura limpia en iOS.

¿Qué es una arquitectura limpia?

Antes de poder comprender en qué consiste la implementación VIP en iOS es necesario saber qué es el concepto de Arquitectura Limpia y cuáles son los beneficios generales que esta representa.

La arquitectura Clean Swift, más conocida como VIP, no es un solo framework, sino que es un conjunto de planillas de Xcode que generan los componentes de la arquitectura limpia. De esta forma, se puede conseguir una completa libertad en el momento de modificar las plantillas y así poder adaptarlas a las necesidades específicas que se tengan.

Entre los principales beneficios de la implementación de una arquitectura limpia podemos destacar los siguientes:

  • Cuando los desarrolladores encuentran un problema o quieren hacer cierta modificación, puede ser complicado encontrar el código relacionado y se puede perder mucho tiempo. La arquitectura limpia se encarga de dar una separación de preocupaciones, haciendo que sea mucho más sencillo encontrar el código.
  • En la arquitectura limpia se pueden aislar los códigos relacionados con frameworks en una capa separada. Cuando no se utiliza una arquitectura limpia el código se vuelve muy dependiente de los frameworks.
  • Cuando toda la app está hecha como un gran y único módulo, las partes se acoplan entre sí de una forma excesiva. La arquitectura limpia puede dividirse en múltiples módulos, haciendo que sea mucho más complicado que aparezcan ciertas dependencias aleatorias.
  • Gracias a la separación de los frameworks las pruebas unitarias son mucho más sencillas.
  • El uso de la arquitectura limpia también sirve de gran ayuda para aislar la lógica de los negocios en una sola capa, evitando que tenga que extenderse por todo el código de la aplicación.

¿Cuáles son las capas de una arquitectura limpia?

Estas son las distintas capas en las que se separa un código basado en la estructura limpia:

  • Entidad: en esta capa se encuentran los objetos simples, aquellos que representan las reglas empresariales. Se puede tratar de una estructura de datos o incluso de un conjunto de métodos, los cuales tienen el objetivo de compartirse por todas las aplicaciones empresariales.
  • Caso de uso: esta capa es la representación de la lógica de negocio específica de la aplicación, que puede utilizar una o varias entidades.
  • Adaptador de interfaz: esta capa tiene la función de poder transformar los datos obtenidos por el uso, por medio de una estructura de datos sin formato, utilizando el formato que sea más conveniente al final, tanto si es una base de datos, web o interfaz de usuario.
  • Capa de framework: etapa en la que se termina de concretar el uso de los datos. Especialmente cuando se aplica dentro del contexto de los móviles, refiriéndose a la vista.

Ahora ya tienes más claro qué es una arquitectura limpia y cuáles son las capas de VIP o Clean Swift.

Las capas de VIPER y las mejoras que supone la implementación VIP

VIPER es la unión de las diferentes siglas en inglés de cada una de las capas que componen la arquitectura limpia (View, Interactor, Presenter, Entity y Router).

  • La View es la más básica de todas y se limita simplemente a reaccionar ante las órdenes que recibe.
  • El Interactor es la más importante de todas. Se encarga de enviar los datos desde la capa de model, y funciona de manera totalmente autónoma respecto a el interface del usuario.
  • El Presenter envía los datos desde la capa Interactor y muestra un tipo de modelo vista y lo envía hasta la capa View para enseñarlo.
  • La Entity lleva el modelo de los objetos utilizados por la capa Interactor.
  • El Router es la que se encarga de toda la navegación de la aplicación. Describe lo que la pantalla quiere mostrar y el momento de hacerlo.

La arquitectura VIPER consiste en que cada capa tiene una serie de funciones específicas y hasta que no las realiza no se pone en funcionamiento la siguiente capa. Es decir, la metodología que sigue es muy similar a la de los empleados de una cadena de producción, en la que cada uno tiene sus funciones y hasta que uno no termina su parte del trabajo asignado no se pone en marcha el siguiente trabajador.

Estructura del módulo VIPER

Estructura del módulo VIPER


¿Por qué la arquitectura VIP es mejor que VIPER?

La arquitectura VIP supone una mejora notable respecto a VIPER porque en VIPER las relaciones entre Viewcontroller, Presenter e Interactor tienen una relación bidimensional, ahora con VIP el flujo de datos es circular ViewController> Interactor> Presenter sin relaciones bidimensionales. Es decir, cada capa puede concentrarse en hacer solo una cosa.

ViewController es ahora la pieza maestra en lugar del Presenter, tiene una conexión con todas las demás capas.

Estructura del módulo VIP

Estructura del módulo VIP


Conclusión

Siempre hay que recordar que no existe una arquitectura perfecta o que se ajuste a todos los casos. Pero es bien conocido que usar correctamente una arquitectura limpia puede hacer que un proyecto este bien organizado y estructurado. Aunque también debemos tener en cuenta que implementarlas de manera incorrecta conducirá al efecto contrario.

También hay que tener en cuenta la lógica de negocio del proyecto, ya que para proyectos pequeños una arquitectura MVC o MVP es más suficiente. Podemos afirmar que la arquitectura VIP es más beneficiosa que VIPER, ya que cada capa tiene una única función al eliminar las relaciones bidimensionales.

Seguramente en el futuro seguirán saliendo nuevas arquitecturas, actualmente ya se está escuchando nuevos arquitecturas que se adapten mejor con SwiftUI y Combine


¿Qué te pareció el artículo? ¿Te gustaría dejarme comentario? Ah, y si te ha gustado no te olvides de compartirla 😄