t2informatik » Wissen kompakt » Code-Duplikat

Code-Duplikat

Identischer oder ähnlicher Quellcode

Als Code-Duplikat wird Quellcode verstanden, der in identischer Form mehrfach innerhalb einer Software verwendet wird. Auch ähnliche Codeabschnitte bzw. Fragmente werden als Code-Duplikat – alternativ auch als Softwareklon oder Quelltextklon – bezeichnet. Code-Duplipkate enstehen beim Kopieren vorhandener Funktionalitäten von einer zu einer anderen Stelle innerhalb einer Software. Dies wird auch Copy-&-Paste-Programmierung genannt.

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. Im Zuge eines Refactorings – das jegliche Art von 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.

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

„Ich brauche Freiheit und Vertrauen. Und ich möchte Verantwortung übernehmen und dabei Spaß haben!“

Share This