anncode

[Android Native, Kotlin, Geek & Teacher]

🌱 Clean Architecture desde cero

¿Qué es Clean Architecture?

Aquí hay dos palabras muy importantes en juego

  1. Clean
  2. Architecture

✨ Clean

El arte de limpiar.

Clean literalmente traducido significa Limpio y tener algo limpio está totalmente relacionado con que esté ordenado. (aunque no es directamente proporcional pero definitivamente están relacionados)

Ordenar, poner cada cosa en su lugar.

Tu ropa tiene un lugar, las llaves de tu casa tienen un lugar, el cargador de tu celular tiene un lugar, y en medida que respetemos esto, nos traerá una multitud de beneficios.

😉 Encontrar tus llaves y/o cargador nunca más será un problema si todo tiene un órden.

I know that feel bro | Wiki Memes Pedia | Fandom

Además traer más ropa a tu closet será mucho más sencillo de integrar si está correctamente ordenada.

En realidad relacionar el termino Clean del software con Órden me gusta mucho porque genera mucho valor. Así como los ejemplos que acabamos de ver parecen hacer tu vida más fácil, aplicar Clean a tus proyectos de software hace más fácil:

  1. Detectar y Resolver Bugs.
  2. Integrar nuevas características a tus proyectos.
  3. Optimizar tu equipo de desarrollo.

Si como programador pasas la mayor parte de tu tiempo leyendo código, desde luego vas a querer que todo lo que esté ahí sea lo más legible y ordenado posible. Esta es la escencia del uso de la palabra Clean en el Software.

Aplicar Clean a tus proyectos te llevará a hacer lo siguiente:

  1. Delegar responsabilidades – Ordenar.
  2. Ordenar nos llevará a separar y categorizar mejor.
Decluttering Queen Marie Kondo Is Now Selling Tiny Boxes – SheKnows

3. El deseo de tener legibilidad nos hará colocar estándares para escribir código que nos permitan leer mejor y más rápido. Por ejemplo: Usar nombres que se puedan buscar y que sean habituales al negocio, evitar anidamiento excesivo, evitar clases muy largas, etc.

Robert C. Martín es el defensor del termino Clean, más o menos es el Marie Kondo del software.

Gracias a la influencia del Tío Bob, hoy sabemos que podemos aplicar Clean a tres cosas:

  1. Code Clean Code
  2. Architecture Clean Architecture
  3. Agile Clean Agile

Este capítulo habla especialmente sobre Clean Architecture y quiero centrarme meramente en ello. Escucha mi Podcast sobre 🎧 Clean Code Aquí

Pero ¿cómo podemos tener nuestro proyecto lo más Clean / Ordenado posible? Acompañame a ver el siguiente concepto.

👷‍♀️ Architecture

Arte y técnica de diseñar, proyectar y construir

Wikipedia

Literalmente el concepto de Arquitectura aplicado en la Construcción, el Diseño y el Arte, puede ser aplicado de la misma forma en el software.

Aplicar una arquitectura le da un sentido de proyección hacía el futuro a nuestros proyectos y aplicaciones.

Las preguntas serían: ¿Por qué quiero hacer esto? ¿Por qué es importante proyectar mi código? No debería enfocarme en que el código funcione? ¿Qué significa proyectar mi código hacia el futuro?

Como programadores tenemos dos trabajos:

  1. Hacer que el código funcione ✅
  2. Proyectarlo al futuro: hacerlo mantenible 🌠
    (déjame en los comentarios si conoces una mejor palabra para describir esto)

Seguro pensabas que tu única responsabilidad era la número 1. no te preocupes antes yo también lo creía, lo importante es que estamos aprendiendo juntos.

Proyectar el código hacía el futuro es darle una estructura, es dárle el órden (Clean 😎) que se merece, para que implementar nuevas cosas y resolver bug’s sea lo más sencillo posible y con la menor cantidad de desarrolladores posibles.

Existen algunos modelos que nos ayudan a ordenar la estructura de nuestro código en Capas tal vez has escuchado el Modelo de Capas o Layers Model. Estos pueden ir desde tener una sola capa donde se concentre todo el código (por supuesto, nada clean/ordenado que proyecte nuestro código al futuro), hasta tener N capas.

Tío Bob nos recomienda estructurar / ordenar nuestro proyecto en 3 capas principales.

  1. Presentation: Interface de Usuario UI.
  2. Domain: Todas las reglas de negocio, también se llama business logic en inglés.
  3. Data: Todo lo que tega que ver con la persistencia de datos.

En los siguientes capítulos voy a presentarte todos cada uno de ellos a detalle.

👉Clean Architecture es:

La forma de ordenar y proyectar nuestro código hacia el futuro, para que añadir nuevas características y resolver bugs sea lo más simple posible con la menor cantidad de desarrolladores.

15 thoughts on “🌱 Clean Architecture desde cero

  1. Una parte muy importante que mencionas es el desarrollo en capas (Layers) precisamente estoy empezando a ver la arquitectura Hexagonal algo diferente al modelo MVC que venia trabajando normalmente, estaria bien que en un futuro podrias hablar algo sobre tipos de arquitecturas.

    Saludos.

  2. Muchas gracias, Anahí, excelente artículo.

    Me gusto esta breve introducción a la Clean Architecture. Y por supuesto, me encantaría leerte si escribes de Clean Code.

    ¡Un saludo!

  3. Por favor sigue este publicando, justo estaba pensando en cómo limpiar y ordenar un proyecto en el que estoy trabajando

  4. Buen artículo, porfavor sigue profundizando en el tema y también espero tus artículos sobre clean code que me interesan mucho. Gracias por compartir tu conocimiento.

    Un saludo.

  5. Excelente articulo, pero mi realiadad es algo caótica con los proyectos que me encuentro administrando actualmente.

    Para contextualizar me encuentro realizando mantenimiento a proyectos desarrollado en codeigniter (php), con base datos oracle.

    Lo bueno es que los proyectos tienen una buena capa de negocio en la base de datos. Pero a nivel de código realmente es un desorden. Todo se encuentra mezclado, no respetaron el concepto MVC (Model, View, Controller), ademas de no ocupar las mismas librerias que ofrece el framework para estandarizar las rutinas, creo que por eso razón por la que PHP tiene una mala reputación.

Responder a David Orantes Cancelar la respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.