(Sniff, sniff)... ¿Qué es ese olor?, ¿de dónde proviene?...
¡Aaah ya!  code smells...

Es muy probable que en tus comienzos de desarrollo, como a muchos de nosotros, no apliques buenas prácticas o estés generando code smells sin darte cuenta.


¿Qué es 'code smells'?

El famoso code smells, significa cualquier caso que indique que en el código fuente podrían presentarse problemas. Básicamente son síntomas que representan que detrás del código puede haber un problema.

Y... ¿Cómo puedo detectarlo y resolverlo?...

Un desarrollador, puede detectar code smells cuando ve:

  • Código duplicado.
  • Métodos extensos.
  • Clases largas.
  • Una lista larga de parámetros.
  • Uso del Switch.
  • Entre otros...

Bueno... y ahora que lo logré detectar... ¿Qué necesito hacer para corregirlo?... La solución es... ¡La Refactorización!

Pero... ¿Qué es la Refactorización?... La refactorización, es un proceso sistemático que sirve para mejorar el código sin tener que crear una nueva funcionalidad para convertir un lío en código limpio y diseño simple.

Veamos un pequeño ejemplo, para que quede aún más claro. Cuando en un método tenemos bastantes líneas de código o necesitamos poner un comentario para explicar algo, debemos empezar a preguntarnos si no estamos generando code smells.

Si en nuestro método, tenemos un fragmento de código que se puede agrupar:

void printOwing() {
  printBanner();

  // Print details.
  System.out.println("name: " + name);
  System.out.println("amount: " + getOutstanding());
}

Una solución es realizar un Método de Extracción, que es mover este código a un nuevo método separado que reemplace el código anterior con una llamada al método:

void printOwing() {
  printBanner();
  printDetails(getOutstanding());
}

void printDetails(double outstanding) {
  System.out.println("name: " + name);
  System.out.println("amount: " + outstanding);
}

Y una ventaja de trabajar de esta manera, es que podemos evitar duplicar código, ya que podemos reutilizar el método, ya sea en otra clase o en otro método.

Si quieres conocer todos los tipos de code smells que existen, con su respectiva explicación y solución, Click Me!.