t2informatik » Wissen kompakt » Dead Code

Dead Code

Was ist Dead Code, welche Formen gibt es und aus welchen Gründen sollte er vermieden werden?

Code, der nicht ausgeführt wird

Der Begriff Dead Code bezeichnet in der Softwareentwicklung 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.

Die deutsche Übersetzung von Dead Code ist „toter Code“; sie ist aber nicht gebräuchlich.

Formen von Dead Code

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

  • Dead 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.

Gründe für Dead Code

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. Da viele Entwicklungen in der Praxis mit „lebendigem“, aber fehlerhaften, funktional unzureichendem oder nicht performanten Code zu kämpfen haben, erfährt Dead Code oftmals nur eine niedrige Priorität. 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 also, Dead Code frühzeitig zu identifizieren und zu eliminieren. Der entsprechende Begriff lautet: Dead Code Elimination. 

Dienstleister gesucht?

Softwareentwicklung aus Berlin