En programación de computadoras , el código redundante es código fuente o código compilado en un programa de computadora que es innecesario, como:
- volver a calcular un valor que se ha calculado previamente [1] y todavía está disponible,
- código que nunca se ejecuta (conocido como código inalcanzable ),
- código que se ejecuta pero no tiene ningún efecto externo (por ejemplo, no cambia la salida producida por un programa; conocido como código muerto ).
Se puede considerar que una instrucción NOP es un código redundante que se ha insertado explícitamente para rellenar el flujo de instrucciones o introducir un retardo de tiempo, por ejemplo, para crear un ciclo de temporización "perdiendo el tiempo". Los identificadores que se declaran, pero nunca se hace referencia, se denominan declaraciones redundantes .
Ejemplos de
Los siguientes ejemplos son en C .
int foo ( int iX ) { int iY = iX * 2 ; return iX * 2 ; }
La segunda iX*2
expresión es un código redundante y se puede reemplazar por una referencia a la variable iY
. Alternativamente, int iY = iX*2
se puede eliminar la definición .
Considerar:
#define min (A, B) ((A) <(B)? (A) :( B))int short_magnitude ( int u1 , int v1 , int u2 , int v2 ) { / * Devuelve la magnitud más corta de (u1, v1) y (u2, v2) * / return sqrt ( min ( u1 * u1 + v1 * v1 , u2) * u2 + v2 * v2 )); }
Como consecuencia de usar el preprocesador de C , el compilador solo verá la forma expandida:
int short_magnitude ( int u1 , int v1 , int u2 , int v2 ) { int temp ; si ( u1 * u1 + v1 * v1 < u2 * u2 + v2 * v2 ) temp = u1 * u1 + v1 * v1 ; / * Redundante ya calculado para la comparación * / si no temp = u2 * u2 + v2 * v2 ; / * Redundante ya calculado para comparación * / return sqrt ( temp ); }
Debido a que el uso de macros min / max es muy común, los compiladores modernos están programados para reconocer y eliminar la redundancia causada por su uso.
Sin embargo, no hay redundancia en el siguiente código:
#define max (A, B) ((A)> (B)? (A) :( B))int random ( int cutoff , int range ) { return max ( cutoff , rand () % rango ); }
Si la llamada inicial a rand (), rango de módulo, es mayor o igual que el límite, se llamará a rand () por segunda vez para un segundo cálculo del rango de% de rand (), que puede resultar en un valor que en realidad es más bajo que el corte. Por tanto, es posible que la macro max no produzca el comportamiento previsto para esta función.