Code duplication

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 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 reuse — Code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software.[1] Contents 1 Overview 2 Types of reuse 3 Examples …   Wikipedia

  • 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-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… …   Deutsch Wikipedia

  • Duplication (Génétique) — En génétique, la duplication génique correspond à la multiplication de matériel génétique sur un chromosome. Il existe plusieurs mécanismes qui résultent à la duplication soit d´une large portion chromosomique, soit d´un gène ou bien de quelques… …   Wikipédia en Français

  • Duplication (genetique) — Duplication (génétique) En génétique, la duplication génique correspond à la multiplication de matériel génétique sur un chromosome. Il existe plusieurs mécanismes qui résultent à la duplication soit d´une large portion chromosomique, soit d´un… …   Wikipédia en Français

  • Duplication — Duplication, duplicate, and duplicator may refer to: Art and fiction Duplicate (1998 film), a Bollywood film directed by Mahesh Bhatt Duplicate (2009 film), a 2009 Malayalam film Gregory Harrison and Kim Greist The Duplicate, a children s book by …   Wikipedia

  • Duplication (génétique) — En génétique, la duplication génique correspond à la multiplication de matériel génétique sur un chromosome. Il existe plusieurs mécanismes qui résultent à la duplication soit d´une large portion chromosomique, soit d´un gène ou bien de quelques… …   Wikipédia en Français

  • Duplication de code — La duplication de code en programmation informatique est une erreur courante de conception de logiciels où une suite d instructions similaires (voire identiques) existe en plusieurs endroits du code source d un logiciel. Description La… …   Wikipédia en Français

  • Duplication — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Duplication », sur le Wiktionnaire (dictionnaire universel) D une manière générale, Le mot duplication …   Wikipédia en Français

  • Code refactoring — Refactor redirects here. For the use of refactor on Wikipedia, see Wikipedia:Refactoring talk pages. Code refactoring is disciplined technique for restructuring an existing body of code, altering its internal structure without changing its… …   Wikipedia

Share the article and excerpts

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