t2informatik » Wissen kompakt » Dead Code

Dead Code

Toter Code, der nicht ausgeführt wird

Der Begriff Dead Code ist in der Softwareentwicklung eine Bezeichnung für Codezeilen, die nicht ausgeführt werden oder deren Ergebnisse nach der Ausführung keine weitere Verwendung finden. Codezeilen werden nicht ausgeführt, da sie

  • nicht mehr benötigt werden,
  • nicht aufgerufen werden,
  • nicht aufgerufen werden können.

In manchen Publikationen wird zwischen verschiedenen Formen von Dead Code unterschieden:

  • Toter Code liegt vor, wenn bspw. bei einer Funktion das Ergebnis nie verwendet wird.
  • Redundanter Code liegt vor, wenn mehrere Codezeilen dasselbe tun. Sind Codezeilen unbeabsichtigt redundant, sollte die Redundanz aufgehoben werden. Ist die Redundanz aber beabsichtigt, bspw. beim temporären Konservieren von Codezeilen, kann sie – zumindest vorübergehend – bestehen bleiben.
  • Unerreichbarer Code liegt vor, wenn Codezeilen nicht aufgerufen werden können, bspw. weil eine Bedingung einer anderen Zeile, die immer eintritt, dies verhindert.
  • Unnötiger Code liegt vor, wenn bspw. eine Abfrage so formuliert wird, dass das Ergebnis immer wahr ist. Die Abfrage ergibt somit keinen Sinn.

Dead Code kann aus unterschiedlichen Gründen entstehen: Möglicherweise hat ein Entwickler vergessen, überflüssige Codezeilen zu löschen. Oder der Entwickler hat sich gegen das Löschen entschieden, weil der Code mit funktionalem Code vermischt ist. Oder der Code wird absichtlich nicht entfernt, so dass er zu einem späteren Zeitpunkt wieder aktiviert werden kann. Oder ein Programmierfehler wurde übersehen etc.

An sich beeinträchtigt Dead Code die Ausführung von Programmteilen nicht, dennoch sollte er aus verschiedenen Gründen vermieden werden:

  • er bietet keinen Nutzen, verursacht aber möglicherweise Aufwände und Kosten, wenn er bspw. im Zuge von Weiterentwicklungen mit angepasst wird.
  • er erschwert die Wartung und Pflege, wenn er nicht zweifelsfrei als toter, redundanter, unerreichbarer oder unnötiger Code zu erkennen ist. Abhilfe könnte ein Refactoring schaffen.
  • er erhöht den Speicherbedarf.
  • er hat Auswirkungen auf die Codeüberdeckung, da er entweder – unnötigerweise – getestet wird oder für eine schlechte Überdeckung sorgt, da er nicht getestet wird.

Grundsätzlich empfiehlt es sich daher, Dead Code möglichst frühzeitig zu identifizieren und zu eliminieren. Der entsprechende Begriff lautet: Dead Code Elimination.

“Das Fachwissen zu Softwarearchitekturen, die Expertise in der Softwareentwicklung und die sehr flexible Arbeitsweise waren ideal für uns.“

„Ihren Blog lese ich schon lange und mit großer Freude. Systematisch, auf den Punkt und ansprechend.“