stringtranslate.com

Código redundante

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 .

Ejemplos

Los siguientes ejemplos están en C.

int foo ( int iX ) { int iY = iX * 2 ;       devolver iX * 2 ; } 

La segunda iX*2expresión es código redundante y se puede reemplazar por una referencia a la variable iY. También int iY = iX*2se 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.

Véase también

Referencias

  1. ^ Debray, SK, Evans, W., Muth, R. y De Sutter, B. 2000. Técnicas de compilación para compactación de código. ACM Trans. Program. Lang. Syst. 22, 2 (marzo de 2000), 378–415.