Buenas prácticas

Aplica Vertical Slice y tu proyecto hablará sobre el Dominio

Aplica Vertical Slice y tu proyecto hablará sobre el Dominio
En: Buenas prácticas

Tener una buena estructura de proyecto es muy importante para evitar perdidas de tiempo por parte de los componentes del equipo y para evidenciar claramente el tipo de aplicación que es.

Como decía Uncle Bob en su artículo Screaming Architecture nuestro proyecto tienen que gritar el tipo de aplicación que es nada más abrirlo.

Vertical Slice es un concepto de las metodologías ágiles pero puede ser aplicado a la forma en la que se estructura un proyecto.

Tradicionalmente hemos estructurado los proyectos en base a capas horizontales pero existen otras formas de estructurar el proyecto que puedan aportar más beneficios.

Estructura horizontal

Normalmente cuando creas un proyecto en cualquier IDE, independientemente de la tecnología, lo normal es que la plantilla por defecto nos proponga una estructura basada en capas horizontales, tiene sentido porque el IDE no sabe el tipo de aplicación que vamos a desarrollar.

El pensamiento horizontal esta altamente ligado al desarrollo en cascada donde había unas fases de análisis, diseño, desarrollo, pruebas y despliegue.

Antes de que las prácticas ágiles llegarán a nuestra vida, diseñar la base de datos y su pertinente capa de datos completa era algo habitual y era consecuente con el tipo de desarrollo tradicional del momento.

Inconvenientes de la estructura horizontal

Al no exponer conceptos de dominio sino de tecnología es más complicado sin conocer el proyecto entender que hace la aplicación, esto es especialmente complicado cuando alguien sin experiencia en el proyecto llega nuevo por ejemplo.

Otro inconveniente se produce cuando hay un módulo de nuestra aplicación que no sigue la misma estructura que el resto. Por ejemplo si en nuestra aplicación tenemos notificaciones push que no se persisten, no existirá capa de datos.

Otro escenario puede ser cuando existe un módulo que no tiene representación visual dentro de nuestra aplicación como la sincronización con otro sistema, en este caso no vamos a tener capa de presentación.

Si se dan estas circunstancias, que suelen ser habituales en los proyectos, es fácil que nos cueste identificar las partes que tenemos que tocar cuando queremos añadir una nueva feature en un módulo en concreto.

Estructura vertical

Con la evolución del desarrollo de software hacia el mundo ágil es común desarrollar orientado a features así que tiene mucho más sentido estructurar nuestro proyecto en base a conceptos de dominio en el primer nivel de la estructura.

Si hay que añadir por ejemplo un nuevo campo en el producto, tendremos que modificar la vista, controlador o presenter, el caso de uso, capa de datos etc.. así que es más sencillo si todos esos componentes cuelgan del mismo sitio.

Ventajas de la estructura vertical

Todos los componentes de un módulo quedan agrupados en el mismo sitio. Cuando hay que añadir una feature de un módulo es más fácil encontrar las clases donde hay que tocar.

Si un módulo no tiene una capa que si existe en otros módulos, como el ejemplo de notificaciones que veíamos antes, es fácil de identificar.

Conclusiones

Cuando una persona abre nuestro proyecto, este debería exponer claramente que tipo de aplicación es.

Esto lo podemos conseguir aplicando Vertical Slice.

Más de XurxoDev
¡Genial! Te has inscrito con éxito.
Bienvenido de nuevo! Has iniciado sesión correctamente.
Te has suscrito correctamente a XurxoDev.
Su enlace ha caducado.
¡Éxito! Comprueba en tu correo electrónico el enlace mágico para iniciar sesión.
Éxito! Su información de facturación ha sido actualizada.
Su facturación no se actualizó.