Code-Duplikat

Wissen kompakt: Als Code-Duplikat wird Quellcode verstanden, der mehrfach innerhalb einer Software verwendet wird.

Code-Duplikat – identischer oder ähnlicher Quellcode

Quellcode, der in identischer Form mehrfach innerhalb einer Software verwendet wird, wird als Code-Duplikat – alternativ auch als Softwareklon oder Quelltextklon – bezeichnet. Auch ähnliche Codeabschnitte bzw. Fragmente gelten als Duplikate.

Code-Duplikat entstehen beim Kopieren vorhandener Funktionalitäten von einer zu einer anderen Stelle innerhalb einer Software. Dies wird auch Copy and Paste Programmierung genannt.

Gründe für Code-Duplikate

Es gibt verschiedene Gründe, die zur Entstehung von Code-Duplikaten führen:

  • Vorhandener Code wird kopiert, um ihn an anderer Stelle zu adaptieren (bspw. durch Umbenennung von Variablen oder Löschen bzw. Hinzufügen von Codezeilen) oder zu testen.
  • Funktionierender Code wird wiederverwendet, um das Risiko neuer Fehler zu minimieren.
  • Entwickler stehen unter Zeitdruck und wollen existierenden Code nutzen, um Zeit bei der Implementierung zu sparen.
  • Entwickler besitzen nicht die Kenntnisse, um einen speziellen Code zu produzieren und duplizieren daher existenten Code.
  • Code wird automatisch generiert, bspw. durch Model Driven Development oder Software Factories.

Auch die Verwendung von Bibliotheken kann zur Entstehung von Softwareklons führen.

Gründe für die Beseitigung von Code-Duplikaten

Im Zuge eines Refactorings – das jeglichen Code-Smell adressiert – versuchen Organisationen oftmals Code-Duplikate aufzulösen, um

  • den Wartungsaufwand zu reduzieren. Ein Quelltextklon muss an jeder Verwendungsstelle gelesen und verstanden werden. Im Unterschied zu anderen Codezeilen, auf die das ebenfalls zutrifft, gilt es dabei herauszufinden, ob kleinere Unterschiede (also bspw. Unterschiede in den Bezeichnern, die Verwendung von Gaps oder Kommentaren) beabsichtigt sind. Sobald Optimierungsmöglichkeiten identifiziert sind, müssen diese an sämtlichen Verwendungsstellen implementiert werden.
  • das Bugfixing zu erleichtern. Leicht können Quelltextklons und damit kopierte Fehler übersehen werden. In der Folge entstehen inkonsistente Änderungen.
  • den Speicherbedarf zu minimieren. Durch das Klonen steigt der Codeumfang und somit der benötigte Speicherplatz an. Gerade im Bereich von eingebetteten Systemen ist dies kritisch, da dort meist nur wenig Speicherplatz verfügbar ist. Zusätzlich steigt durch das Duplizieren auch die Zeit für die Kompilierung.
  • die Lesbarkeit von Code zu erleichtern.

Beim Identifizieren von Code-Duplikaten – auch als Clone Detection bezeichnet – können Werkzeuge sowohl bei der textuellen als auch bei der lexikalischen oder der abstrakten Analyse helfen. Auch die Nutzung von Metriken wird oftmals von Tools unterstützt.

Auflösen lassen sich Softwareklons mit Hilfe von Abstraktionen (bspw. durch die Auslagerung von wiederkehrenden Algorithmen in Prozeduren oder Methoden) oder durch die Verwendung einer gemeinsamen Basisklasse. Sollte dies nicht so leicht und schnell möglich sein, empfiehlt es sich, das Code-Duplikat zu “beobachten”, um wenigstens weitere, ungewollte inkonsistente Änderungen zu vermeiden.

Code-Duplikat - die Verwendung von identischem oder ähnlichem Quellcode

Was macht t2informatik?

Was macht t2informatik? Kleiner Tipp: Es hat etwas mit Softwareentwicklung zu tun!

Hinweise:

Die Inhalte auf dieser Seite dürfen Sie gerne teilen oder verlinken.

Übrigens: Wir suchen Softwareentwicklerinnen und Softwareentwickler.

Hier finden Sie ein Video über Code Smells: Duplicate Code (DRY).

Und hier finden Sie ergänzende Informationen aus unserer Rubrik Wissen kompakt:

Wissen kompakt: Was ist ein Bugfix?

Was ist ein Bugfix?

Wissen kompakt: Wie funktioniert Refactoring?

Wie funktioniert Refactoring?