stringtranslate.com

Código de olor

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]

Definición

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.

Véase también

Referencias

  1. ^ abc Tufano, Michele; Palomba, Fabio; Bavota, Gabriele; Oliveto, Rocco; Di Penta, Massimiliano; De Lucia, Andrea; Poshyvanyk, Denys (2015). "Cuándo y por qué su código comienza a oler mal" (PDF) . 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering . págs. 403–414. CiteSeerX  10.1.1.709.6783 . doi :10.1109/ICSE.2015.59. ISBN. 978-1-4799-1934-5.S2CID59100195  .​
  2. ^ Fowler, Martin. "CodeSmell". martinfowler.com/ . Consultado el 19 de noviembre de 2014 .
  3. ^ ab Beck, Kent. "El código huele". WikiWikiWeb . Ward Cunningham . Consultado el 8 de abril de 2020 .
  4. ^ Fowler, Martin (1999). Refactorización. Mejorar el diseño del código existente . Addison-Wesley. ISBN 978-0-201-48567-7.
  5. ^ Binstock, Andrew (27 de junio de 2011). "Elogio del código pequeño". Information Week . Consultado el 27 de junio de 2011 .
  6. ^ Suryanarayana, Girish (noviembre de 2014). Refactorización para el diseño de software . Morgan Kaufmann. pág. 258. ISBN 978-0128013977.
  7. ^ Martin, Robert C. (2009). "17: Olores y heurística". Clean Code: A Handbook of Agile Software Craftsmanship . Prentice Hall. ISBN 978-0-13-235088-4.
  8. ^ Suryanarayana, Girish, Ganesh Samarthyam y Tushar Sharma. Refactorización para el diseño de software: gestión de la deuda técnica / Girish Suryanarayana, Ganesh Samarthyam, Tushar Sharma. Primera edición. Waltham, Massachusetts; Morgan Kaufmann, 2015. Impreso.

Lectura adicional

Enlaces externos