Código muerto

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

En programación, se conoce como código muerto a una parte del código fuente que se ejecuta pero sus resultados nunca se usan.[1] [2] La ejecución de este tipo de código consume tiempo de computo en algo que jamás se utiliza.

Es frecuente confundirlo con el código inalcanzable aunque conservan una diferencia (este jamás se ejecuta, y si bien los dos son indeseables el código muerto es más grave que el inalcanzable).

Además de consumir tiempo de computo el código muerto puede arrojar excepciones o afectar un estado global del programa. por lo tanto si bien los resultados jamás se utilizan remover este código puede cambiar la salida del programa y evitar bugs innecesarios. Esta es una razón por la cual el código muerto es menos deseado que el código inalcanzable.

Ejemplo[editar]

int foo (int X, int Y) {
	int Z = X/Y;
	return X*Y;
}

En el código anterior la división entre X e Y se calculó pero jamás se utiliza, además, en el caso que Y sea 0 el programa arrojaría una excepción con posibilidad de abortar la ejecución, por lo tanto la salida del programa se ve afectada por esta línea.

Análisis[editar]

Se puede utilizar una optimización de compilador llamada eliminación de código muerto para eliminar este código. Este análisis se puede llevar a cabo mediante el análisis de variable viva, que es una forma de análisis estático de software y análisis de flujo de datos. Esta también es una diferencia con respecto al código inalcanzable que se descubre mediante un análisis de control del flujo.

La eliminación de código en general es la misma técnica que se usa para eliminar el código inalcanzable y el código redundante.

En los proyectos de programación grandes, a veces es difícil de reconocer y eliminar código muerto, especialmente cuando algún módulo entero quede muerto.[3]

Algunos IDE (como Visual Studio 2010[4] y Eclipse[5] ) poseen la habilidad de detectar código muerto durante tiempo de compilación.

Véase también[editar]

Referencias[editar]

Bibliografía[editar]

  • Muchnick S. S. 1997 Advanced Compiler Design and Implementation. Morgan Kaufmann.
  • Appel, A. W. 1998 Modern Compiler Implementation in Java. Cambridge University Press.

Enlaces externos[editar]