Diciembre 26
Edición 001 🐧
¡Hola a todos! 👋. Antes de iniciar con esta primera edición, queremos agradecerles por su apoyo suscribiéndose a la newsletter. Obtendrán contenido de mucha utilidad que los elevará como developers.
Hablemos de Clean Architecture. Es una metodología para diseñar aplicaciones propuesta por el reconocido gurú del software, Uncle Bob Martin.
Para que lo entiendas fácil, imagina tu aplicación como una cebolla: en la capa más interna -o núcleo- es donde viven las reglas de negocio (también llamado dominio), la capa del medio -o casos de uso- es la que orquesta la interacción entre entidades, y por último, la capa más superficial -o controladores- que dan vida a las aplicaciones y sitios web facilitando la comunicación con el sistema.
Aquí va un ejemplo más gráfico:
Si tuviéramos que resumir una arquitectura limpia en una sola palabra, esta sería: independencia. Cuando sigues este concepto de diseño, debes entender que ninguna capa de nivel inferior puede conocer a otra de nivel superior.
Esto último hace más fácil el mantenimiento, puesto que puedes cambiar el código teniendo la tranquilidad de que no vas a destruir nada.
Pensemos en una aplicación muy simple de tareas, en la que podamos crear tareas y marcarlas como completadas.
De entrada, sabemos que una de las entidades es ‘tarea’, y también un repositorio para almacenarlas. Ambas cosas son objetos que pertenecen a la lógica del negocio (o dominio).
Escribiremos el ejemplo en Java. Definamos primero las entidades:
Posteriormente, escribiremos los casos de uso. Estos definen la lógica de la aplicación, que está más relacionada con cómo interactúan los componentes del dominio entre ellos.
Por último, un par de controladores para cada caso de uso. Estos son los encargados de exponer una interfaz para que el usuario final pueda interactuar con los componentes internos. En esta capa también es posible efectuar validaciones.
Con esto tenemos ya una arquitectura limpia, bien planteada.
¿Y la interfaz externa qué? 🤔. Bueno, pues esto es lo que el usuario ve. Puede ser un sitio web, una aplicación móvil, o cualquier pantalla ajena al servicio que codificamos, pero que se comunique con él.
Te dejaré un par de repositorios que te pueden ser de utilidad: uno es un plugin de Graddle que te permitirá crear aplicaciones Java o Kotlin que implementen esta arquitectura. El otro es una plantilla en ASP.NET que también la implementa.
Aun así, se trata de una práctica que puede aplicarse en cualquier tecnología, y por eso te invito a que investigues cómo hacerlo específicamente en tu lenguaje.