En programación informática , el código redundante es el código fuente o código compilado en un programa informático que no es necesario, como por ejemplo:
Una instrucción NOP puede considerarse un código redundante que se insertó explícitamente para rellenar el flujo de instrucciones o introducir un retraso de tiempo, por ejemplo, para crear un bucle de tiempo "perdiendo tiempo". Los identificadores que se declaran, pero nunca se hace referencia a ellos, se denominan declaraciones redundantes .
Los siguientes ejemplos están en C.
int foo ( int iX ) { int iY = iX * 2 ; devolver iX * 2 ; }
La segunda iX*2
expresión es código redundante y se puede reemplazar por una referencia a la variable iY
. También int iY = iX*2
se puede eliminar la definición.
Considerar:
#define min(A,B) ((A)<(B)?(A):(B))int shortest_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 del uso del preprocesador C , el compilador solo verá la forma expandida:
int shortest_magnitude ( int u1 , int v1 , int u2 , int v2 ) { int temp ; if ( u1 * u1 + v1 * v1 < u2 * u2 + v2 * v2 ) temp = u1 * u1 + v1 * v1 ; /* Redundante ya calculado para comparación*/ else 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 máx(A,B) ((A)>(B)?(A):(B))int aleatorio ( int corte , int rango ) { return max ( corte , rand () % rango ); }
Si la llamada inicial a rand(), módulo range, es mayor o igual que cutoff, rand() se llamará una segunda vez para un segundo cálculo de rand()%range, lo que puede dar como resultado un valor que en realidad sea menor que cutoff. Por lo tanto, la macro max puede no producir el comportamiento deseado para esta función.