¿Que es un code smell?

Cuando un programador  lleva un tiempo programando o gana suficiente experiencia, se vuelve capaz de detectar posibles problemas con solo examinar las líneas de código del sistema. Existen ciertas estructuras o rutinas  problemáticas que pueden llegar a ser indicadores superficiales de un posible mal funcionamiento del sistema. A este conjunto de líneas de código se les conoce como Code Smells.

¿Cómo detecto un code smell?.

No existe una fórmula o receta para detectarlo, depende de tu experiencia. El mejor método para detectar este código apestoso es: escribir un montón de líneas de código apestoso o de mala calidad. Equivocarte muchas veces te da la experiencia suficiente para volverte un experto en code smells. Aparte, esto cae en la línea de la interpretación. Donde un programador experimentado puede ver un problema, otro puede ver únicamente una «diferencia de estilos». Los smells son un síntoma, no la enfermedad que tratamos de erradicar.

¿Qué hago si encuentro código apestoso?.

Un método o clase excesivamente grande (varios miles o decenas de miles de líneas), por ejemplo,  es un indicador claro de un código apestoso. Si llegas a encontrar esto en los fuentes de tu empresa, felicidades encontraste un smell. Por favor, no corras directo a modificarlo. Lo ideal, seria refactorizar el código en métodos y clases más pequeños, desgraciadamente no se puede modificar directamente sin antes atacar la verdadera enfermedad: falta de cocimiento sobre el sistema, falta de pruebas y falta de documentación. Para refactorizar debes reunir un mínimo de casos de prueba que te permita saber cómo debe y no debe funcionar el componente. Una vez reunidos estos insumos se procede a escribir pruebas que garanticen que el componente funcionara igual después de su refactorización, una vez que se asegure que no se agregaran bugs al querer reparar el sistema, entonces  ya se podrá hacer la debida reparación.

El smell es la punta del iceberg que esconde un problema de mayor tamaño, hay que hacer un análisis para entender el problema y solucionarlo del mejor modo. La experiencia dando mantenimiento a los legados te va a facilitar este trabajo.

¿Debo de corregir todos los code smell que encuentre?

La respuesta es NO. Toda reparación tiene costes y consecuencias, va a haber código problemático que no se pueda reparar aunque se quiera. Por ejemplo: código de terceros o componentes de baja calidad. Cada caso es distinto, en un mundo perfecto ningún programador debería dejar con vida algún code smell, pero existen actividades que pueden ser más importantes. El equipo de desarrollo puede decidir no tomar los code smell como actividades urgentes y dejarlo para otro momento, es válido. Si has encontrado código apestoso y tu equipo ha decidido no atender este pendiente. Entonces puedes levantar un ticket, una actividad o lo que sea en tu flujo de trabajo que le permita al equipo retomar esta actividad más adelante, documenta lo mejor que puedas y explica en que consiste el smell. Da visibilidad al problema, comunícalo a tus compañeros  y líderes de equipo.

Las consecuencias de modificar.

El código apestoso suele venir altamente acoplado o en múltiples copias distribuidas por los repositorios de la empresa. Modificar y refactorizar un componente puede llevar a modificar más partes del sistema o tener comportamientos no esperados. Va a suceder, esto no debe de detenerte, continua refactorizando. El coste de no hacer nada para mejorar la calidad del código siempre es más alto que el hacer algo.

Autor imagen: patchattack

 

Gustavo Sánchez
Últimas entradas de Gustavo Sánchez (ver todo)

Soy especialista en escribir software de calidad. Mediante el uso de marcos de trabajo, técnicas y automatización de procesos he podido reducir los costes operativos de los sistemas de la empresa. Sistemas confiables y adaptables producen clientes felices.

1 comments On ¿Que es un code smell?

Comments are closed.