Code Smells: Cómo evitarlos y detectar problemas en tu código
Detectar code smells es inteligente, mejora la calidad del código y te evita problemas 🔥

Hey devs, bienvenidos nuevamente a este hermoso blog, ahora hablaremos sobre los code smells, un término popular en los sectores del código un poco más avanzados, así que aquí te enseñaré todo lo que creo que te va a servir del tema, empecemos!

¿Qué son los Code Smells?

Un code smell o "mal olor de código" es una señal de advertencia. No significa que el código esté mal o no funcione, ni tampoco que tiene bugs, sino que podría estar ocultando problemas más profundos como violaciones de principios SOLID, deuda técnica y poca mantenibilidad a largo plazo.

Martin Fowler popularizó este término para describir fragmentos de código que "huelen mal", aunque todavía no sean errores. Detectarlos a tiempo puede ahorrarte bugs, refactors dolorosos y peleas con tu yo del futuro.

Así que ya sabes, el término fue propuesto por Fowler en su libro "Refactoring: Improving the Design of Existing Code" publicado en 1999.

Cabe mencionar también que Kent Beck influyó en las ideas detrás de los smells, y es por eso que aparece en los agradecimientos del libro de Fowler y de hecho contribuyó en el capítulo 3:

Fuente: Libro "Refactoring" por M.Fowler

Recuerda dev: Un code smell es una señal de que algo podría estar mal con el código desde el punto de vista del diseño, la legibilidad, el mantenimiento o la escalabilidad.

Fuente: https://martinfowler.com/

¿Por qué deberías preocuparte?

Porque si los ignoras te llevan a cometer cosas como...

  • Código difícil de entender y mantener.
  • Bugs que reaparecen o nunca se terminan de arreglar.
  • Desarrolladores frustrados que prefieren reescribir que mantener.
  • Dificultad para aplicar cambios sin romper algo.

Principales 'Smells'

Te los mostraré en una tabla:

Code SmellDescripción
Long MethodMétodos demasiado largos que hacen muchas cosas.
Large Class (God Class)Clases que tienen demasiadas responsabilidades. Cuando se hace extremo se convierte en la Clase dios.
Duplicated codeMismo código repetido en diferentes lugares.
Feature EnvyUna clase que accede demasiado a los datos de otra.
Data ClumpsGrupos de variables que siempre aparecen juntas.
Switch StatementsMuchos switch que violan el principio de abierto/cerrado.
Ambiguous namesNombres de variables, métodos o clases que no comunican claramente su propósito.
Primitive ObsessionUso excesivo de tipos primitivos en lugar de objetos o value objects.
Speculative GeneralityCódigo diseñado para casos que aún no existen.
MiddlemanEs una clase o método que no hace más que delegar trabajo a otros componentes, sin añadir lógica relevante. Está como "pasarela" solamente.

La tabla no muestra todos los code smells definidos en el libro de Fowler, sino algunos de los más comunes e importantes 😉

Cómo detectar estos Smells

Revisiones de código (code reviews)

La inspección humana es la primera línea de defensa. Algunas prácticas clave:

Qué buscar:

  • Nombres ambiguos: Variables como datamanager, o métodos como Process().
  • Métodos largos: Bloques de más de 40 líneas (ajustable según estándares del equipo).
  • Acoplamiento excesivo: Clases que dependen de demasiados componentes externos.
  • Duplicación: Código repetido en múltiples lugares.

Análisis estático (SonarQube, Roslyn analyzers, ReSharper)

Reflexión personal: (Prueba del Rubber Duck) Si no puedes explicar un bloque de código fácilmente, puede estar oliendo mal. Si no puedes explicar un bloque de código en 30 segundos, es probable que tenga smells.

Reglas de estilo en el equipo: Establecer convenciones evita smells desde el principio. Nombrado, tamaño de clases, complejidad, etc son reglas que deberás definir como equipo.

Opinión personal

Como ingeniero senior, uno de los mayores aprendizajes que me he percatado es que el código que escribimos no es para nosotros, sino para el equipo que lo mantendrá después (que también somos nosotros). Detectar y eliminar malos olores no es perfeccionismo, es empatía profesional y sobretodo es una decisión inteligente porque nos hará la vida más fácil, eficiente y productiva a futuro. Incluso en proyectos personales, el código limpio hace que volver a él no sea una tortura.

Conclusión

Un code smell no siempre es un error, pero siempre es una oportunidad de mejora. Es como ver una grieta en una pared: no está cayéndose la casa, pero deberías prestarle atención antes de que lo haga.

Detectarlos y refactorizarlos a tiempo nos permite escribir código más limpio, más claro y más mantenible. Y al final, eso es lo que nos diferencia como ingenieros de software profesionales.

Si esta entrada te ha encantado, entonces compártela genio! 🔥🥳

Créditos de imagen de portada: Basada en Foto de Valdir Oliveira en Unsplash

Un comentario en «Code Smells: Cómo evitarlos y detectar problemas en tu código»

Deja una respuesta

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