<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Redundanter_Code</id>
	<title>Redundanter Code - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Redundanter_Code"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Redundanter_Code&amp;action=history"/>
	<updated>2026-05-21T09:34:40Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Redundanter_Code&amp;diff=2500002&amp;oldid=prev</id>
		<title>imported&gt;Aka: https | viele Tippfehler in anderen Artikeln – Helfer gesucht</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Redundanter_Code&amp;diff=2500002&amp;oldid=prev"/>
		<updated>2023-12-11T18:20:13Z</updated>

		<summary type="html">&lt;p&gt;https | &lt;a href=&quot;/index.php?title=Benutzer:Aka/Fehlerlisten/viele_Tippfehler&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:Aka/Fehlerlisten/viele Tippfehler (Seite nicht vorhanden)&quot;&gt;viele Tippfehler in anderen Artikeln – Helfer gesucht&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Redundanter Code&amp;#039;&amp;#039;&amp;#039; ist in der [[Programmierung]] der Begriff für den [[Quelltext]] eines [[Computerprogramm]]s bzw. Teile davon, die [[Redundanz (Informationstheorie)|redundant]] (‚überflüssig‘) sind.&amp;lt;ref&amp;gt;{{Literatur|Autor=Saumya K. Debray, William Evans, Robert Muth, Bjorn De Sutter|Titel=Compiler techniques for code compaction|Band=22|Nummer=2|Seiten=378–415|Sammelwerk=ACM Transactions on Programming Languages and Systems (TOPLAS)|Datum=2000-03|Sprache=en|DOI=10.1145/349214.349233}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[https://www.computerlexikon.com/was-ist-redundant computerlexikon.com] 2012: &amp;#039;&amp;#039;Öfter vorhanden als eigentlich gebraucht&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Besonders in der Technik werden mit ‚redundant‘ im Allgemeinen &amp;#039;&amp;#039;mehrfach vorhandene Komponenten&amp;#039;&amp;#039; bezeichnet.&amp;lt;ref&amp;gt;[https://neueswort.de/redundant/ neueswort.de] &amp;#039;&amp;#039;Beispiele mit Bedeutung ‚mehrfach‘&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[https://www.linguee.de/deutsch-englisch/uebersetzung/redundante+ausf%C3%BChrung.html linguee.de] &amp;#039;&amp;#039;alle Beispiele bedeuten ‚mehrfach‘&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt; Auf Programmcode bezogen bedeutet redundanter Code mehrfach identisch vorhandene Quellcodeteile ([[Quelltextklon]]e).&lt;br /&gt;
&lt;br /&gt;
In der Regel werden unter „redundantem Code“ Textkopien im Anweisungsteil eines Programms verstanden, grundsätzlich sind Redundanzen (wie auch [[toter Code]]) auch in den [[Deklaration (Programmierung)|Datendefinitionen]] eines Programms möglich.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Unterschiedliche Bedeutung/Abgrenzung&amp;#039;&amp;#039;:&amp;lt;br /&amp;gt;&lt;br /&gt;
Auch [[toter Code]] wird, weil er formal ‚überflüssig‘ scheint, zum Teil als redundanter Code bezeichnet, ist jedoch nicht redundant i.&amp;amp;nbsp;S. von ‚mehrfach vorhanden‘.&lt;br /&gt;
&lt;br /&gt;
== Bedeutung ==&lt;br /&gt;
&lt;br /&gt;
Alle Formen redundanten Codes gelten aus verschiedenen Gründen als &amp;#039;&amp;#039;unerwünscht bzw. Mangel in der [[Softwarequalität]]&amp;#039;&amp;#039;. So vergeudet redundanter Code CPU-Zeit, die anderen [[Thread (Informatik)|Threads]] fehlt. Darüber hinaus vergeudet mehrfach vorhandener Code Speicherplatz und kann zu unnötigem [[Cache|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.&amp;lt;ref&amp;gt;{{Literatur|Autor=David Noel Card, Victor E Church, William W. Agresti|Titel=An empirical study of software design practices|Sammelwerk=IEEE Transactions on Software Engineering|Band=12|Nummer=2|Seiten=264–271|Datum=1986-02|ISSN=0098-5589|Sprache=en}} “Table X further implies that a high proportion of unreferenced local and calling sequence variables signifies sloppy workmanship leading to high cost and fault rates.”&amp;lt;/ref&amp;gt; Er wirkt sich auch oft negativ auf [[Softwaremetrik|Metriken]] aus und erschwert die [[Verifizierung|Programmverifikation]].&lt;br /&gt;
&lt;br /&gt;
Je nach Situation kann redundanter Code jedoch auch &amp;#039;&amp;#039;bewusst&amp;#039;&amp;#039; 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.&amp;amp;nbsp;B. bei sehr kleinen Codefragmenten) – oder es liegt ein [[Programmfehler]] vor (besonders toter/unerreichbarer Code), dessen Entdeckung ein Ziel beim [[Softwaretest]] ist.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&amp;lt;syntaxhighlight line lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
int foo (int x) {&lt;br /&gt;
    int y = 100 / x;  // Code löst bei x = 0 eine Exception aus und beendet das Programm&lt;br /&gt;
    int z = x * x;    // Berechnung, die zwei Zeilen weiter unten noch Mal ausgeführt wird&lt;br /&gt;
    if (z &amp;gt;= 0)&lt;br /&gt;
        return x * x; // redundante Berechnung, optimieren Compiler heraus, nennt sich Common Subexpression Elimination&lt;br /&gt;
    return -1;        // Code wird erreicht für Inputs 46341…65535, 80265…92681, 103622…113511, 122607…131071, ... (Annahme: 32 bit int)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Toter Code – Im Beispiel wird in Zeile 2 die Zahl 100 durch &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; dividiert, das Ergebnis aber nie verwendet. Es handelt sich somit um toten Code. Ist allerdings x [[Null#Division|Null]], wird eine [[Ausnahmebehandlung|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.&lt;br /&gt;
* Redundanter Code – Im Beispiel wird &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; in Zeile 3 und 5 quadriert, ohne dass &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; dazwischen geändert wird. Das Ergebnis ist somit immer dasselbe, damit ist der Code redundant. &amp;lt;code&amp;gt;return z&amp;lt;/code&amp;gt; wäre somit in Zeile 5 angebracht.&lt;br /&gt;
* Unerreichbarer Code – Im Beispiel wird die Zeile 7 niemals erreicht, da die Abfrage &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;z &amp;gt;= 0&amp;lt;/code&amp;gt; in Zeile 4 immer wahr ist und in Zeile 5 die Methode verlassen wird. Somit handelt es sich bei Zeile 7 um unerreichbaren Code.&lt;br /&gt;
* Unnötiger Code – Nachdem die Abfrage &amp;lt;code&amp;gt;z &amp;gt;= 0&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
== Gründe ==&lt;br /&gt;
Redundanter Code entsteht unter anderem durch&lt;br /&gt;
* Programmierfehler in komplexen bedingten Verzweigungen;&lt;br /&gt;
* eine Folge von internen Umwandlungen, die von einem optimierenden Übersetzer durchgeführt werden;&lt;br /&gt;
* unvollständiges Testen eines neuen oder veränderten Programms&lt;br /&gt;
* unvollständige Wartung, wie etwa nachträglicher Rückbau temporärer Sonderregelungen ohne Verständnis der alten Funktionen.&lt;br /&gt;
&lt;br /&gt;
== Analyse ==&lt;br /&gt;
Redundanten Code zu entdecken ist eine Form von [[Statische Code-Analyse|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.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Compileroptimierung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Aka</name></author>
	</entry>
</feed>