Está en la página 1de 2

Hediondez del cdigo

En programacin de computadores, la hediondez del cdigo (code smell en ingls) es cualquier sntoma en el cdigo fuente de un programa que posiblemente indica un problema ms profundo. Las hediondeces del cdigo usualmente no son bug de programacin (errores) -- no son tcnicamente incorrectos y en realidad no impiden que el programa funcione correctamente. En cambio, indican deficiencias en el diseo que puede ralentizar el desarrollo o aumentan el riesgo de errores o fallos en el futuro. A menudo el ms profundo problema insinuado por una hediondez de cdigo puede ser descubierto cuando el cdigo es sometido a un corto ciclo de retroalimentacin donde es refactorizado en pasos pequeos y controlados, y el diseo resultante es examinado para ver si hay ms hediondeces de cdigo que indican la necesidad de ms refactorizacin. Desde el punto de vista de un programador encargado de realizar la refactorizacin, las hediondeces del cdigo son heursticas para indicar cuando hay que refactorizar, y qu tcnicas de refactorizacin especficas usar. As, una hediondez de cdigo es un conductor hacia la refactorizacin. El trmino parece haber sido acuado por Kent Beck en WardsWiki a finales de 1990. El uso del trmino aument despus de que apareci en Refactoring: Improving the Design of Existing Code (Refactorizando: Mejorando el diseo del cdigo existente.1 La hediondez del cdigo es tambin un trmino usado por programadores que utilizan tcnicas giles.2 Determinar lo que es y no es una hediondez de cdigo suele ser con frecuencia un juicio subjetivo y puede variar segn el lenguaje de programacin, el desarrollador, y la metodologa de desarrollo. Existen herramientas, como Checkstyle, PMD y FindBugs para Java, para comprobar automticamente por ciertos tipos de hediondeces de cdigo.

ndice

1 Hediondeces de cdigo comunes 2 Referencias 3 Vase tambin 4 Enlaces externos

Hediondeces de cdigo comunes


Cdigo duplicado: existe cdigo idntico o muy similar en ms de una ubicacin. Mtodo grande: un mtodo, funcin o procedimiento que ha crecido hasta hacerse demasiado grande. Clase grande: una clase que ha crecido hasta hacerse demasiado grande. Ver objeto Dios. Demasiados parmetros: una larga lista de parmetros de un procedimiento o funcin empeora la legibilidad y la calidad del cdigo. Envidia de caractersticas: una clase que usa excesivamente mtodos de otra clase. Intimidad inadecuada: una clase que tiene dependencias en detalles de implementacin de otra clase.

Herencia rechazada: una clase que sobreescribe un mtodo de una clase base de tal manera que el contrato de la clase base no es honrado por la clase derivada. Ver principio de sustitucin de Liskov. Clase perezosa / gorrn: una clase que hace demasiado poco. Complejidad artificiosa: Uso forzado de patrones de diseo demasiado complicados, donde uno ms simple sera suficiente. Identificadores excesivamente largos: en particular, el uso de convenciones de nombres para proporcionar desambiguacin que debera estar implcita en la arquitectura de software. identificadores excesivamente cortos: el nombre de una variable debe reflejar su funcin, a menos que sea obvio. Excesivo uso de literales: estos deben codificarse como constantes con nombre, para mejorar la legibilidad y para evitar errores de programacin. Adicionalmente, los literales pueden y deben ser externalizados en archivos/scripts de recursos cuando sea posible, para facilitar la localizacin del software si se pretende implementar en diferentes regiones. Supercallback: callback excesivos.

También podría gustarte