Kodduplicering är ett fenomen inom programmering , där vissa delar av källkoden kan förekomma mer än en gång, både inom en eller flera programenheter. Det är ett symptom på den så kallade " dåliga koden ". [1] Främst för att dess längd ökar; Det är på grund av dubbelarbete, inte på grund av tillfälligheter. En sekvens av dubbletter kallas ibland en klon .
Några anledningar till varför två stycken kod kan anses vara dubbletter:
En av huvudorsakerna till duplicering är kopiera och klistra in programmering , där delar av koden kopieras helt enkelt för att "det fungerar." I de flesta fall kräver en sådan operation små ändringar i den bärbara koden, som att byta namn på variabler eller lägga till och ta bort vissa avsnitt. I vissa fall krävs funktionalitet som är väldigt lik det som redan finns i en annan del av programmet och programmeraren skriver kod som ligger väldigt nära det som redan finns.
Kodduplicering är ett tecken på en "låg" eller "lat" programmeringsstil. Bra programmeringsstil är vanligtvis baserad på kodåteranvändning . Det kan tyckas att användningen av dubbletter kommer att påskynda processen att skapa ett program något, eftersom programmeraren inte behöver tänka på hur koden redan används och hur den kan användas i framtiden. Problemet är dock att skrivning av kod bara är en blygsam del av produktens livscykel , och ytterligare underhåll av kod med dubbletter kommer att vara för komplicerat. Problem orsakade av kodduplicering:
Det finns ett visst antal algoritmer som låter dig hitta dubblettkod, bland dem:
I vissa fall är visuell identifiering av dubbletter effektiv [4] .
Följande kodavsnitt beräknar medelvärdet av en matris med heltal .
extern int array1 []; extern int array2 []; int summa1 = 0 ; int summa2 = 0 ; int genomsnitt1 ; int genomsnitt2 ; int i ; för ( i = 0 ; i < 4 ; ++ i ) summa1 += matris1 [ i ]; medel1 = summa1 / 4 ; för ( i = 0 ; i < 4 ; ++ i ) summa2 += array2 [ i ]; medel2 = summa2 / 4 ;I den kan två cykler separeras i en separat funktion:
int calcAverage ( int * Array_of_4 ) { int summa = 0 ; för ( int i = 0 ; i < 4 ; ++ i ) summa += Array_of_4 [ i ]; retursumma / 4 ; _ }Genom att använda den här funktionen blir du av med dubblettkod:
extern int array1 []; extern int array2 []; int genomsnitt1 = calcAverage ( matris1 ); int medel2 = calcAverage ( array2 );