Enfoques para organizar el código en Arquitectura limpia
Con Split by feature o by type organizarás tu código con conocimiento, eso te hace mejor dev! 🐿️🤝

En arquitecturas modernas como Clean Architecture , Microservicios y en general cualquier arquitectura bsada en los principios de Domain Driven Design (DDD) inclusive Layered, existen dos estrategias para organizar el código y son:

  • Split by Feature
  • Split by Type

Split by Feature

Está relacionado con el enfoque Vertical Slice que indica que una funcionalidad o característica del sistema se debe implementar de manera completa desde la capa de presentación, infraestructura pasando por la lógica de negocio o aplicación y llegando hasta el dominio.

En palabras sencillas, cada slice abarca todo lo que se necesita para implementar una funcionalidad específica, desde la interfaz de usuario hasta las capas más internas como el dominio.

Puedes imaginar esto como una tajada de un pastel o "slice" donde una tajada tiene todas las capas del proyecto incluídas en ella.

En este enfoque el código se organiza en torno a las funcionalidades de la aplicación.

Cada funcionalidad tiene su propio conjunto de archivos y carpetas que contienen todo lo necesario para implementar ese feature.

Ventajas

  • Facilita el mantenimiento de funcionalidades específicas.
  • Brinda claridad al trabajar en una característica específica, ya que todo lo que necesitas está en un sólo lugar.

Desventajas

  • Puede existir duplicación de cóidigo si no se comparte adecuadamente entre características.

Split by Type

Aquí, el código se organiza en torno a los tipos o capas del sistema, como controladores, servicios, repositorios, entidades, etc. Las funcionalidades se distribuyen a través de estas capas.

Aquí la tajada sería distinta, serían cortes horizontales.

Fuente: amazon.com

Ventajas

  • Mejor organización, es más clara y separada por resposabilidades.
  • Facilita la reutilización de código ya que las clases y servicios comunes están en un sólo lugar.
  • Fomenta la separación de preocupaciones o responsabilidades.

Desventajas

  • Puede ser más difícil ver cómo se implementa una característica completa, ya que el código está disperso.

Ejemplo

Por ejemplo para un sistema de gestión de usuarios y productos tu estructura de carpetas para cada enfoque quedaría así:

Los nombres de las carpetas y archivos son referenciales, tu le pondrás el que corresponda según la arquitectura que estés utilizando y puede que estén en distintos proyectos, pero la forma de separar el código para cada enfoque creo que es clara, verdad? 🐿️

En lo personal para proyectos con Clean Architecture utilizo Split by Feature, es el enfoque que mejor se adapta a las características de esta arquitectura.

Si esta entrada te ha gustado compártela! 🐿️

Créditos de imagen de portada: Foto de Diliara Garifullina en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *