Code-Duplizierung

Code-Duplizierung

Als Code-Duplizierung (code duplication) wird in der Informatik das Auftreten der gleichen Codestruktur an mehreren Stellen im Programmcode bezeichnet. Duplizierter Code entsteht gewöhnlich durch Kopieren vorhandener Programmteile und gilt als das am häufigsten auftretende Merkmal für schlechten Code. Die Code-Duplizierung wird als Anti-Pattern angesehen und widerspricht dem Prinzip „Don’t repeat yourself“ (DRY).

Sie führt die Liste der so genannten Code Smells[1] an, da sie gewöhnlich zu inkonsistentem, schlecht wartbarem und unübersichtlichem Programmcode führt.

Durch Refactoring[2] kann Code-Duplizierung relativ einfach aufgelöst werden. Es existieren verschiedene Algorithmen, um Code-Duplizierung aufzudecken. Zwei Beispiele hierfür sind Baker’s algorithm[3] und Visual clone detection.[4]

Es gibt verschiedene Werkzeuge zur statischen Analyse von Programmcode, die auch Code-Duplizierungen finden können. Eines der ältesten und bekanntesten dieser Werkzeuge ist Lint. Daneben existieren neben zahlreichen freien Werkzeugen wie dem PMD-Plugin CPD (Copy/Paste Detector) und Clone Digger (für Python und Java) auch proprietäre Werkzeuge wie CCFinder (Code Clone Finder) oder Simian (Similarity Analyser)

Beispiel

Der folgende Code dient zur Berechnung des Durchschnitts eines Arrays von Integern

extern int array1[];
extern int array2[];
 
int sum1 = 0;
int sum2 = 0;
int average1 = 0;
int average2 = 0;
 
for (int i = 0; i < 4; i++)
{
   sum1 += array1[i];
}
average1 = sum1/4;
 
for (int i = 0; i < 4; i++)
{
   sum2 += array2[i];
}
average2 = sum2/4;


Die beiden Schleifen können als einzelne Funktion umgeschrieben werden:

int calcAverage (int* Array_of_4)
{
   int sum = 0;
   for (int i = 0; i < 4; i++)
   {
       sum += Array_of_4[i];
   }
   return sum/4;
}

Literatur

  • Martin Fowler: Refactoring. Wie Sie das Design vorhandener Software verbessern. Addison-Wesley, München 2000 (Originaltitel: Refactoring. Improving The Design Of Existing Code, übersetzt von Bernd Kahlbrandt), ISBN 3-8273-1630-8, S. 67–82. 

Einzelnachweise

  1. http://www.empros.ch/vielfach/faustregeln/502149936a0f4bb0f/codesmell.php
  2. http://wwwcs.uni-paderborn.de/cs/ag-engels/ag_dt/Courses/Lehrveranstaltungen/Siemens-Seminar/Ausarbeitungen/Heidenreich-Adrian.pdf
  3. Brenda S. Baker. A Program for Identifying Duplicated Code. Computing Science and Statistics, 24:49–57, 1992.
  4. Visual Detection of Duplicated Code by Matthias Rieger, Stephane Ducasse.

Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Code-Duplikation — Als Code Duplizierung (code duplication) wird in der Informatik das Auftreten der gleichen Codestruktur an mehreren Stellen im Programmcode bezeichnet. Duplizierter Code entsteht gewöhnlich durch Kopieren vorhandener Programmteile und gilt als… …   Deutsch Wikipedia

  • Code duplication — Als Code Duplizierung (code duplication) wird in der Informatik das Auftreten der gleichen Codestruktur an mehreren Stellen im Programmcode bezeichnet. Duplizierter Code entsteht gewöhnlich durch Kopieren vorhandener Programmteile und gilt als… …   Deutsch Wikipedia

  • Code smell — Unter Smell (von engl. schlechter Geruch ) versteht man in der Programmierung ein Konstrukt, das auf ein Problem hinweist und eine Überarbeitung des Programm Quelltextes nahelegt. Ein Smell muss nicht unbedingt ein Fehler sein, das fragliche… …   Deutsch Wikipedia

  • Code smells — Unter Smell (von engl. schlechter Geruch ) versteht man in der Programmierung ein Konstrukt, das auf ein Problem hinweist und eine Überarbeitung des Programm Quelltextes nahelegt. Ein Smell muss nicht unbedingt ein Fehler sein, das fragliche… …   Deutsch Wikipedia

  • Kohäsion (Informatik) — In der objektorientierten Programmierung beschreibt Kohäsion, wie gut eine Programmeinheit eine logische Aufgabe oder Einheit abbildet. In einem System mit starker Kohäsion ist jede Programmeinheit (eine Methode, eine Klasse oder ein Modul)… …   Deutsch Wikipedia

  • Codewiederholung — Mit Codewiederholung (auch Code Duplizierung) wird in der Programmierung eine unnötige Wiederholung von Programmcode in Quelltexten bezeichnet. Bei der Softwarewartung, der Modifikation oder der Erweiterung des Programmcodes kann Codewiederholung …   Deutsch Wikipedia

  • Test-Driven development — Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD), manchmal auch scherzhaft Extreme Testing) ist eine Methode, die häufig bei der agilen Entwicklung von… …   Deutsch Wikipedia

  • Test first development — Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD), manchmal auch scherzhaft Extreme Testing) ist eine Methode, die häufig bei der agilen Entwicklung von… …   Deutsch Wikipedia

  • Testgesteuerte Programmierung — Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD), manchmal auch scherzhaft Extreme Testing) ist eine Methode, die häufig bei der agilen Entwicklung von… …   Deutsch Wikipedia

  • Testgetriebene Programmierung — Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD), manchmal auch scherzhaft Extreme Testing) ist eine Methode, die häufig bei der agilen Entwicklung von… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”