Creators
5
min de lectura
19 de febrero de 2021

¿Sabes lo que es Bad Smell ?

Thiago dos Santos Chagas
Consultor .Net
Desarrollo e implemento varias pruebas para la aplicación software . Evalúo los proyectos y me aseguro de que compliance cumpla con los requisitos del negocio en la plataforma API de sensedia.
Más sobre el autor

¿Has oído hablar alguna vez de Bad Smell? Esta semana nos centraremos en este tema en nuestro blog con una serie de posts que hablarán de las claves de insights relacionadas con este tema tan importante en la vida de un Desarrollador. ¿Sabías que un código tiene su salud? Sí, la tiene! ¿Sabes cómo comprobar si está sano?

Lo ideal para escribir un código correctamente es recordar las enseñanzas de SOLID, Código Limpio y utilizar la orientación a objetos correctamente.

Si no tienes ni idea de lo que es SOLID o el Código Limpio, dejaré en la sección de referencias los enlaces a los posts que escribí sobre los principios SOLID y uno sobre el Código Limpio del blog balta-io.

Hay algunos factores, como los plazos cada vez más ajustados, la documentación abstracta e incluso la deficiencia técnica, que suelen hacernos crear códigos poco saludables y que no se corresponden con lo solicitado o no son la mejor solución para ese problema.

Para saber si tu código está sano, no necesitas ver House o Anatomía de Greys. Cuando no está sano, empezamos a encontrar varios síntomas de que el código no está bien, identificamos el famoso "Bad Smell" u "Olor a Código". Así que prepárate, higieniza tus manos, ponte la mascarilla y vamos a analizar nuestros códigos.


Olor a código, Bad Smell?

Según Martin Fowler, un Bad Smell ocurre cuando el código está mal diseñado o cuando la implementación elegida es incorrecta. Estos síntomas nos ayudan a comprobar algunos problemas en el código, como por ejemplo:

  • Indicar o corresponder a un problema profundo en un sistema.
  • Necesidad de refactorización.
  • Compruebe qué áreas del código deben limpiarse. (Regla del explorador)

 

¿Y cómo podemos afrontarlo?

En primer lugar, utilizaremos el principio de la sorpresa mínima, en el que seguiremos las siguientes reglas:

  • Haga exactamente lo que el usuario espera.
  • Sé sencillo (KISS).
  • Sea claro, sea coherente.

 

Bad Smell y sus clasificaciones

Hay algunas categorías que utilizamos para saber a qué tipos de Bad Smell nos enfrentamos. Estas categorías son:

  • Bloaters
  • Abusadores de la orientación a objetos
  • Evitar el cambio
  • Dispensables
  • Acopladores
  • Ofuscadores 

En este post, nos centraremos en la categoría Bloaters.


Pero, ¿qué es un Bloater?

Bloater es una categoría que se encuentra siempre que un código crece innecesariamente con frecuencia. Esto suele afectar a la velocidad y al procesamiento del código.

La prevención para esta categoría consiste en crear códigos magros y enfocados.

Un Bad Smell que puede ser clasificado como un Bloater es la Obsesión Primitiva.


Obsesión primitiva

Se produce cuando se utilizan muchos tipos primitivos en lugar de estructuras de "abstracción". Puede hacer que el código sea menos legible, y no intencionado, y esto dificulta enormemente su lectura, dando lugar a duplicidades, ya que los datos no se organizan en una única estructura.


Veamos un ejemplo que nos ayude a entender

En la imagen anterior tenemos una clase llamada PrimitiveObsession, que contiene varios campos como tipos primitivos. Cuando construimos clases que contienen varios tipos primitivos, normalmente, a primera vista, no parecen muy organizadas, pareciendo un código totalmente procedimental y sin expresión. Como el constructor contiene varios parámetros, no es tan legible.

Así que, vamos a refactorizar esa clase y resolver los problemas.

Lo primero sería utilizar la Orientación a Objetos para crear una abstracción que represente un objeto que agregue campos que tengan sentido para el contexto. En nuestro caso tenemos los campos

  1. Calle
  2. Distrito
  3. Ciudad
  4. Número
  5. Código postal
  6. Información adicional


Así, creamos un tema llamado Dirección que contendrá todas estas propiedades.

Y después de esta "refactorización", la clase tiene este aspecto:

Obsérvese que la visibilidad de la clase es elegante, mucho más delgada y más sencilla para identificar el contenido.

Espero que lo hayan disfrutado! En el próximo post, hablaremos de la Bad Smell de la Familia Ofuscada.

May the force be with you!

¡Gracias por leer!