Diskussion:Toter Code

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 5 Jahren von MaweHD in Abschnitt Datenflusskontrolle
Zur Navigation springen Zur Suche springen

Beispiel[Quelltext bearbeiten]

Im Beispiel kann die Division durch 0 zu einem Fehler führen, da das Beispiel in C ist, muss es aber nicht zu einem Laufzeitfehler führen. Warum jetzt pauschal der Code einfach entfernt werden kann, finde ich nicht einleuchtend. Die Entfernung würde unter Umständen den Ablauf ändern. Dass der Code zu entfernen ist, folgt laut Erläuterung des Beispiels gerade daraus, dass eine Ausnahme auftritt. Sollte die Entfernung des toten Codes nicht unabhängig davon gewünscht sein? --Zahnradzacken 17:01, 29. Dez. 2011 (CET)Beantworten

Ich habe das Beispiel mal als Java deklariert. Die auftretende ArithmeticException wäre dann ein Seiteneffekt der Funktion. --Nbuechen 17:28, 29. Dez. 2011 (CET)Beantworten

Definition[Quelltext bearbeiten]

Ich habe mir die für die Definition zitierte Quelle mal angesehen. Dort heißt es „For example, if it is possible for a computation to generate exceptions or raise signals whose handling can affect the behavior of the rest of the program, then we cannot consider that computation to be dead.“

Also das Gegenteil von dem, was sich im Artikel an die Definition anschließt ("kann er Ausnahmebehandlungen auslösen"). --Zahnradzacken 17:21, 29. Dez. 2011 (CET)Beantworten

So ganz sauber ist der englische Artikel auch nicht. Gemeint ist aber wohl ein "nicht gewollter" Seiteneffekt, den man hier unterstellen muss. --N. Büchen 17:32, 29. Dez. 2011 (CET)Beantworten
Dann wäre der tote Code also "ungewollt" doch nicht toter Code. Und mit der Beschreibung des Beispiels ist das in beiden Sprachversionen nicht konsistent. Die Quelle finde ich da überzeugender. Demnach handelt es sich beim Beispiel nur scheinbar um toten Code. Hätte man Multiplikation statt Division (und keinen Überlauf), wäre es tatsächlich toter Code. --Zahnradzacken 17:37, 29. Dez. 2011 (CET)Beantworten
Ich glaube die Definition ist selbst in den Quellen nicht konsistent. Die letzte Quelle beschreibt eher unereichbaren Code. Ich denke, man muss die Quellenrecherche fortsetzen. --N. Büchen 19:10, 29. Dez. 2011 (CET)Beantworten
Ich habe den QS-Baustein gesetzt, da innerhalb der Artikel Dead code elimination auch schon unerreichbarem Code gemeint ist. Die Definitionen sollten entsprechend dem Sprachgebrauch der Quellen angepasst werden. Unter umständen muss man von mehreren verschiedenen Definitionen ausgehen. --N. Büchen 19:25, 29. Dez. 2011 (CET)Beantworten

Variable[Quelltext bearbeiten]

int foo (int x) {
  int y = 100 / x;  // toter Code, da y nicht verwendet wird
  int z = x * x;    // redundanter Code zu 2 Zeilen weiter unten
  if (z >= 0) {
    return x * x;   // redundanter Code zu 2 Zeilen weiter oben
  }
  return -1;        // unerreichbarer Code, da z immer >= 0 ist
}

Ich würde Zeile 2 nicht als toten Code bezeichnen, sondern y als tote Variable. Den Begriff lebendige Variable gibt es offenbar. --Siehe-auch-Löscher (Diskussion) 14:11, 18. Dez. 2015 (CET)Beantworten

Datenflusskontrolle[Quelltext bearbeiten]

Im Abschnitt Optimierung wird auf Datenflusskontrolle verlinkt. Man landet beim Artikel Datenflusssteuerung, in dem es um die Datenübertragung zwischen zwei Geräten geht. Mit totem Code hat das nichts zu tun. --MaweHD (Diskussion) 12:16, 27. Dez. 2018 (CET)Beantworten