Arquitectura mal olor - design smells

En este vídeo, vamos a hablar de cuando tu aplicación empieza a oler mal. Esto se conoce como design smells.

Te estarás preguntado: ¿Cómo así que puede oler mal? Pues vamos a ver de que se trata. Debajo del video te dejo la transcripción del vídeo.

Link al vídeo de YouTube | Suscríbete a mi canal


Muchas veces el diseño y la arquitectura de un sistema tienen ciertos problemas, o malos olores, que van a causar distintas dificultades cuando la estés modificando.

Vamos a revisar cada uno de los malos olores.

1. Rigidez

Imagínate que tienes una aplicación. Quieres añadir un nuevo método y resulta que lo tienes que poner en varias interfaces, en varias clases y llamarlo desde distintos lugares.

Hacer un cambio toma muchísimo trabajo. Es decir que el diseño de tu aplicación es difícil de modificar. A eso nos referimos con rigidez.

2. Fragilidad

Piensa en alguno de estos escenarios:

  • Haces un cambio en la interfaz, y de un momento a otro se daña la lógica del negocio.
  • Realizas un cambio para un cliente que termina afectando a otros.

Si alguno de los dos escenarios ocurre, tu diseño es muy frágil. Cualquier cambio es susceptible a dañar distintas partes de la aplicación. Entonces allí podemos ver otro mal olor.

3. Inmovilidad

Hiciste la primera aplicación para la empresa. Todo salió muy bien y vas a hacer la segunda aplicación. Y resulta que esta tiene muchas cosas en común con la primera.

De pronto quieres reusar el código de seguridad o alguna parte de gestión de usuarios. Pero resulta que cuando quieres sacar esos componentes y ponerlos en la segunda aplicación, te das cuenta que es supremamente difícil. Todo está tan amarrado y tan mezclado, que no puedes hacer esa separación tan fácilmente.

Como puedes ver, el reuso se complicó. Eso significa, que tu diseño es difícil de reusar.

4. Viscosidad

No sé como lo llaman en tu país. En Colombia, cuando se resuelve un problema de una forma poco elegante u ortodoxa, se llama “machete”.

Entonces cuando tienes un problema, aplicas un machete y lo resuelves. Sabes que hay mejores soluciones. Sabes que algún día Dios te castigará por ese machete que estás haciendo, pero tu solución funcionó.

Tu diseño es viscoso cuando hacer las cosas mal, es más fácil, que hacer las cosas bien.

Veámoslo con un ejemplo. Tienes una aplicación donde necesitas implementar unos cambios. Si el diseño es correcto, estos cambios implicarían añadir nuevas interfaces, implementar un patrón o modificar algo muy puntual. Es decir, el diseño te permite hacer los cambios con facilidad.

Sin embargo, cuando el diseño es complicado y no está bien hecho, puede resultar mucho más rápido implementar el machete. O sea, hacer las cosas mal.

Si tu diseño no permite hacer las cosas bien, huele a viscosidad.

5. Complejidad innecesaria

Seguro has estado en escenarios donde hay un arquitecto que propone un diseño muy complejo pensando en 10,000, 100,000 usuarios, cuando en realidad la aplicación no tiene más de 100.

Se anticipan de alguna forma a problemas que en el momento no existen.

Esto es añadir complejidad innecesaria en el proyecto. No lo malinterpretes, no quiere decir que tu arquitectura no deba escalar para soportar esos usuarios.

Sin embargo, primero se debe resolver los problemas reales que tiene el negocio y la aplicación. En la medida en que vaya creciendo, se puede ir mejorando este diseño, el cual debe tener la flexibilidad para permitir escalar.

Pero cuando la aplicación es más compleja de lo necesario, definitivamente ahí también hay un mal olor.

6. Repetición innecesaria

Muchas veces sucede que tenemos estructuras duplicadas. Tenemos código repetido, métodos que hacen lo mismo. Y eso demuestra también un problema en el diseño.

Aquí encontrarás un vídeo en donde se habla ampliamente de copiar y pegar, no repetir código, etc. Ahí puedes profundizar.

7. Opacidad

¿Cuántas veces no te ha pasado que, cuando llegas y revisas el código de alguien, no tienes ni la mas remota idea de que está pasando? Hay veces que ese código solamente lo entiende Dios y la persona que lo escribió.

Eso es mucho más frecuente de lo que nos imaginamos.

Cuando nuestro diseño no es fácil de entender, se puede considerar opaco u oscuro. Esto demuestra que hay un problema.

Lo anterior puede causar inconvenientes con la mantenibilidad. Puede causar que estés amarrado todo el tiempo a la persona que lo hizo y que entonces no sea tan fácil modificar la aplicación.

Cierre

Eso concluye el tema sobre los malos olores (design smells). Espero que con estas ideas tu diseño no huela mal.

Si necesitas algunas ideas adicionales sobre esto, puedes revisar nuestro mini curso de principios de diseño.

Es totalmente gratuito. Ahí vas a encontrar buenas prácticas relativamente sencillas de implementar y que ayudan a eliminar los malos olores.

Espero que te haya gustado.

Únete a mi lista de correo.
Te avisaré de nuevo material que te ayude a ser un mejor desarrollador o arquitecto.

Cuando la arquitectura de tu aplicación huele mal [Vídeo]

Emprendedor, fundador y arquitecto de software. Ha enseñado distintas tecnologías a profesionales en varias partes del mundo. Ingeniero y geek apasionado por el trabajo remoto.