En programación informática , un olor a código es cualquier característica en el código fuente de un programa que posiblemente indique un problema más profundo. [1] [2] Determinar qué es y qué no es un olor a código es subjetivo y varía según el lenguaje , el desarrollador y la metodología de desarrollo.
El término fue popularizado por Kent Beck en WardsWiki a fines de la década de 1990. [3] El uso del término aumentó después de que apareciera en el libro de 1999 Refactoring: Improving the Design of Existing Code de Martin Fowler . [4] También es un término utilizado por programadores ágiles . [5]
Una forma de ver los olores es con respecto a los principios y la calidad: "Los olores son ciertas estructuras en el código que indican la violación de los principios fundamentales del diseño e impactan negativamente en la calidad del diseño". [6] Los olores de código no suelen ser errores ; no son técnicamente incorrectos y no impiden que el programa funcione. En cambio, indican debilidades en el diseño que pueden ralentizar el desarrollo o aumentar el riesgo de errores o fallas en el futuro. Los malos olores de código pueden ser un indicador de factores que contribuyen a la deuda técnica . [1] Robert C. Martin llama a una lista de olores de código un "sistema de valores" para la artesanía del software. [7]
Contrariamente a estas interpretaciones severas, la definición original de Cunningham era que un olor es una sugerencia de que algo puede estar mal, no una evidencia de que ya existe un problema. [3]
A menudo, el problema más profundo que sugiere un olor a código se puede descubrir cuando el código se somete a un ciclo de retroalimentación corto , donde se refactoriza en pasos pequeños y controlados, y se examina el diseño resultante para ver si hay más olores a código que, a su vez, indiquen la necesidad de más refactorización. Desde el punto de vista de un programador encargado de realizar la refactorización, los olores a código son heurísticas que indican cuándo refactorizar y qué técnicas de refactorización específicas utilizar. Por lo tanto, un olor a código es un impulsor de la refactorización.
Factores como la comprensibilidad del código, la facilidad con la que se puede modificar, la facilidad con la que se puede mejorar para soportar cambios funcionales, la capacidad del código para reutilizarse en diferentes entornos, la facilidad con la que se puede probar el código y la confiabilidad del código son factores que se pueden usar para identificar olores en el código. [8]
Un estudio de 2015 [1] que utilizó el análisis automatizado de medio millón de confirmaciones de código fuente y el examen manual de 9164 confirmaciones que se determinó que presentaban "olores de código" descubrió que:
Herramientas como Checkstyle , PMD , FindBugs y SonarQube pueden identificar automáticamente olores en el código.