Nadbytečný kód - Redundant code - Wikipedia
v programování, nadbytečný kód je zdrojový kód nebo kompilovaný kód v a počítačový program to je zbytečné, například:
- přepočítání hodnoty, která byla dříve vypočítána[1] a je stále k dispozici,
- kód, který se nikdy nespustí (známý jako nedosažitelný kód ),
- kód, který je spuštěn, ale nemá žádný vnější účinek (např. nemění výstup vytvořený programem; známý jako mrtvý kód ).
A NOP instrukce může být považována za nadbytečný kód, který byl výslovně vložen, aby vyplnil návod streamovat nebo zavést časové zpoždění, například k vytvoření a časovací smyčka „plýtváním časem“. Identifikátory které jsou deklarovány, ale nikdy neodkazovány, jsou pojmenovány nadbytečná prohlášení.
Příklady
Následující příklady jsou v C.
int foo(int iX){ int iY = iX*2; vrátit se iX*2;}
Druhý iX * 2
výraz je nadbytečný kód a lze jej nahradit odkazem na proměnnou iY
. Alternativně definice int iY = iX * 2
místo toho lze odstranit.
Zvážit:
# definovat min (A, B) ((A) <(B)? (A) :( B))int kratší_mocnost(int u1, int v1, int u2, int v2){ / * Vrátí menší velikost (u1, v1) a (u2, v2) * / vrátit se čtv(min(u1*u1 + v1*v1, u2*u2 + v2*v2));}
V důsledku používání C preprocesor, kompilátor uvidí pouze rozbalený formulář:
int kratší_mocnost(int u1, int v1, int u2, int v2){ int tepl; -li (u1*u1 + v1*v1 < u2*u2 + v2*v2) tepl = u1*u1 + v1*v1; / * Nadbytečné již vypočítané pro srovnání * / jiný tepl = u2*u2 + v2*v2; / * Nadbytečné již vypočítané pro srovnání * / vrátit se čtv(tepl);}
Protože použití maker min / max je velmi běžné, moderní kompilátory jsou naprogramovány tak, aby rozpoznávaly a eliminovaly nadbytečnost způsobenou jejich použitím.
V následujícím kódu však není žádná redundance:
#define max (A, B) ((A)> (B)? (A) :( B))int náhodný(int odříznout, int rozsah){ vrátit se max(odříznout, rand()%rozsah);}
Pokud je počáteční volání modulového rozsahu rand () větší nebo rovno cutoff, bude rand () volán podruhé pro druhý výpočet rozsahu rand ()%, což může vést k hodnotě, která je ve skutečnosti nižší než mezní hodnota. Maximální makro tedy nemusí vytvářet zamýšlené chování pro tuto funkci.