Loading AI tools
überflüssiger Quelltext oder überflüssige Teile eines Computerprogramms Aus Wikipedia, der freien Enzyklopädie
Redundanter Code ist in der Programmierung der Begriff für den Quelltext eines Computerprogramms bzw. Teile davon, die redundant (‚überflüssig‘) sind.[1][2]
Besonders in der Technik werden mit ‚redundant‘ im Allgemeinen mehrfach vorhandene Komponenten bezeichnet.[3][4] Auf Programmcode bezogen bedeutet redundanter Code mehrfach identisch vorhandene Quellcodeteile (Quelltextklone).
In der Regel werden unter „redundantem Code“ Textkopien im Anweisungsteil eines Programms verstanden, grundsätzlich sind Redundanzen (wie auch toter Code) auch in den Datendefinitionen eines Programms möglich.
Coderedundanz kann auch über unterschiedliche Programme hinweg auftreten – wenn beispielsweise identische Funktionsteile in mehreren Programmen jeweils individuell programmiert/codiert werden, anstatt sie als Unterprogramm aufzurufen oder durch eine Include-Anweisung einzubinden.
Unterschiedliche Bedeutung/Abgrenzung:
Auch toter Code wird, weil er formal ‚überflüssig‘ scheint, zum Teil als redundanter Code bezeichnet, ist jedoch nicht redundant i. S. von ‚mehrfach vorhanden‘.
Alle Formen redundanten Codes gelten aus verschiedenen Gründen als unerwünscht bzw. Mangel in der Softwarequalität. So vergeudet redundanter Code CPU-Zeit, die anderen Threads fehlt. Darüber hinaus vergeudet mehrfach vorhandener Code Speicherplatz und kann zu unnötigem Caching von Befehlen im Befehlscache der CPU führen. Redundanter Code reduziert die Wartbarkeit, erhöht den Aufwand, Code zu dokumentieren und führt zu mehr Fehlern.[5] Er wirkt sich auch oft negativ auf Metriken aus und erschwert die Programmverifikation.
Je nach Situation kann redundanter Code jedoch auch bewusst entstehen: Er soll beispielsweise einen vorläufigen oder ehemaligen Quelltextteil konservieren, wird aus bestimmten Gründen mehrfach gehalten (siehe Quelltextklon), hat bei gegebenen Vorteilen keine nachteilige Bedeutung (z. B. bei sehr kleinen Codefragmenten) – oder es liegt ein Programmfehler vor (besonders toter/unerreichbarer Code), dessen Entdeckung ein Ziel beim Softwaretest ist.
int foo (int x) {
int y = 100 / x; // Code löst bei x = 0 eine Exception aus und beendet das Programm
int z = x * x; // Berechnung, die zwei Zeilen weiter unten noch Mal ausgeführt wird
if (z >= 0)
return x * x; // redundante Berechnung, optimieren Compiler heraus, nennt sich Common Subexpression Elimination
return -1; // Code wird erreicht für Inputs 46341…65535, 80265…92681, 103622…113511, 122607…131071, ... (Annahme: 32 bit int)
}
x
dividiert, das Ergebnis aber nie verwendet. Es handelt sich somit um toten Code. Ist allerdings x Null, wird eine Ausnahme ausgelöst. Eine Entfernung dieses Codes führt somit zu einer Änderung der Funktionalität. Da Ausnahmen auszulösen aber niemals ein Teil der Funktionalität sein sollte, handelt es sich dabei um eine fehlerhafte Funktionalität, die zu entfernen ist.x
in Zeile 3 und 5 quadriert, ohne dass x
dazwischen geändert wird. Das Ergebnis ist somit immer dasselbe, damit ist der Code redundant. return z
wäre somit in Zeile 5 angebracht.z >= 0
in Zeile 4 immer wahr ist und in Zeile 5 die Methode verlassen wird. Somit handelt es sich bei Zeile 7 um unerreichbaren Code.z >= 0
in Zeile 4 immer wahr ist, ist sie sinnlos und kann ebenso entfernt werden. Unnötiger Code fällt zwar in keine der drei genannten Kategorien, wird aber landläufig oft auch als toter Code bezeichnet.Redundanter Code entsteht unter anderem durch
Redundanten Code zu entdecken ist eine Form von statischer Codeanalyse und benötigt eine genaue Analyse der Ablaufsteuerung, um den Code unabhängig von den Variablen und anderen Laufzeitbedingungen zu finden. Mit Hilfe geeigneter Analysewerkzeuge können redundante Codeteile gefunden werden.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.