Antal kodelinjer

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 19. januar 2020; checks kræver 2 redigeringer .

Antallet af linjer kode ( eng.  Source Lines of Code-SLOC ) er en software-metrik , der bruges til at måle dens volumen ved at tælle antallet af linjer i kildekodens tekst . Som regel [1] [2] bruges denne indikator til at forudsige lønomkostningerne for at udvikle et specifikt program i et specifikt programmeringssprog eller til at vurdere arbejdsproduktiviteten efter programmet er skrevet.

Optælling af antallet af kodelinjer

Traditionelt anses det for at være fornuftigt kun at sammenligne størrelsen af ​​projekter op til en størrelsesorden . Blandt hele rækken af ​​metoder til beregning af denne metrik skelner de fleste kilder mellem to hovedmetoder: at tælle fysiske og logiske linjer [3] .

Fysiske linjer er alle ikke-tomme linjer i en tekstfil . Tomme linjer tages i betragtning, hvis antallet i nogle afsnit ikke overstiger 25 %. Ellers ignoreres tomme linjer, der overstiger grænsen på 25 %.

Ved at måle de logiske kodelinjer forsøger man at tælle antallet af faktiske udsagn i programmet, men deres definition afhænger selvfølgelig af det bestemte programmeringssprog. For eksempel er den enkleste måde at tælle antallet af logiske kodelinjer på i C- og Pascal -lignende sprog at tælle antallet af semikoloner , der afslutter udsagn.

Fysiske kodelinjer er mere intuitive og nemmere at læse. Resultaterne af beregningen afhænger dog i det væsentlige af reglerne for formatering og formatering af kildekoden, som logiske kodelinjer er underlagt i langt mindre omfang.

Overvej følgende C-eksempel:

for ( i = 0 ; i < 100 ; ++ i ) printf ( "hej" ); // Hvor mange linjer kode er der?

I dette tilfælde har vi:

For en anden programmør kan det samme stykke kode skrives på flere linjer:

for ( i = 0 ; i < 100 ; ++ i ) { printf ( "hej" ); } // Hvor mange linjer kode er der?

I dette eksempel vil vi have:

  • 5 fysiske kodelinjer
  • 2 logiske linjer kode
  • 1 kommentarlinje

Historie

Det menes, at ideen om at bruge kodelinjer som en metrik for størrelsen af ​​computerprogrammer går tilbage til 1950'erne , hvor Fortran , Assembler og Cobol var de mest brugte sprog . Hovedmekanismen til at indtaste programmer i en computer var hulkort og hulbånd , og en kodelinje blev kodet på ét kort (en ramme hulbånd). Da de var et objekt for den fysiske verden, var de (hullede kort / rammer af hulbånd og følgelig kodelinjer) nemme at tælle. Derudover havde pakken med hulkort, der udgjorde programmet, et meget synligt volumen, som ledere kunne bedømme programmørernes produktivitet efter .

Brug af metrikken

Resultater baseret på antallet af kodelinjer er ofte inkonsistente, især når de bruges forkert. Derfor synes brugen af ​​denne metrik i processen med at vurdere lønomkostninger berettiget. Sammenhængen med funktionalitet er dog ikke længere så klar. Erfarne programmører har en tendens til at skrive mindre kode, mens de opnår det samme resultat. Og hvis forskellen i klassen af ​​udviklere kan udjævnes, når man evaluerer ydeevnen for et tilstrækkeligt stort team, så virker brugen af ​​denne metrik til at evaluere en persons ydeevne utilstrækkelig.

Størrelsen af ​​det samme program skrevet på forskellige programmeringssprog kan variere betydeligt (se KAELOC  - assembler - ækvivalent strengkonverteringsteknik). Eksemplet nedenfor sammenligner programmet "Hello world" i C og Cobol (kendt for dets "omfattende indhold")

C COBOL
#include <stdio.h> int main ( void ) { printf ( "Hej verden" ); returnere 0 ; } 000100 IDENTIFIKATIONSDIVISION. 000200 PROGRAM-ID. HEJ VERDEN. 000300 000400* 000500 MILJØDIVISION. 000600 KONFIGURATIONS AFSNIT. 000700 KILDE-COMPUTER. RM-COBOL. 000800 OBJEKT-COMPUTER. RM-COBOL. 000900 001000 DATADIVISION. 001100 FILAFSNIT. 001200 100000 PROCEDURE OPDELING. 100100 100200 HOVEDLOGISK AFSNIT. 100300 START. 100400 DISPLAY " " LINJE 1 POSITION 1 SLETT EOS. 100500 DISPLAY "Hej verden!" LINJE 15 POSITION 10. 100600 STOP KØR. 100700 MAIN-LOGIC-EXIT. 100800 EXIT.
Kodelinjer: 5
(ekskl. tomme)
Kodelinjer: 17
(ekskl. tomme)

Relativt for nylig er et andet aspekt af dette problem dukket op - forskellen mellem programkoden skrevet i hånden og automatisk genereret. Moderne udviklingsværktøjer giver ret ofte mulighed for automatisk at generere store mængder kode med blot et par museklik . Den mest fremtrædende repræsentant for disse systemer er værktøjerne til visuel udvikling af en grafisk brugergrænseflade . Mængden af ​​arbejde involveret i at oprette en sådan kode er på ingen måde sammenlignelig med mængden af ​​arbejde, for eksempel at skrive en enhedsdriver . På den anden side kan det vise sig, at det kan være meget mere tidskrævende at skrive en specialiseret brugergrænsefladekomponent med kompleks adfærd i hånden end at skrive en simpel driver.

Eksempler

Størrelsen af ​​kildekoderne til operativsystemer i Microsoft Windows NT -familien er ikke nøjagtigt kendte, men ifølge kilden [4] er de:

År Version Kodelinjer, mio
1993 Windows NT 3.1 4-5
1994 Windows NT 3.5 7-8
1996 Windows NT 4.0 11-12
2000 Windows 2000 >29
2001 Windows XP 45

Størrelsen af ​​Linux-kernens kildekoder kan sammen med enhedsdriverne, der er inkluderet der, beregnes nøjagtigt:

År Version Kodelinjer
1991 Linux-kerne 0.1 10 239
1994 Linux-kerne 1.0.0 176 250
1995 Linux-kerne 1.2.0 310 950
1996 Linux-kerne 2.0.0 777 956
1999 Linux-kerne 2.2.0 1 800 847
2001 Linux-kerne 2.4.0 3 377 902
2003 Linux-kerne 2.6.0 5 929 913
2009 Linux-kerne 2.6.32 12 606 910 [5]
2012 Linux 3.6 kerne 15 868 036 [6]
2017 Linux-kerne 4.11.7 18 373 471 [7]

Dimensioner på andre systemer:

År Version Kodelinjer
PostgreSQL 775.000
1C 3.000.000
2008 1C-Bitrix 762 854

Se også

Noter

  1. Oversigt over COCOMO-modellen . Hentet 8. juni 2010. Arkiveret fra originalen 27. februar 2010.
  2. Kodelinjer på C2 wiki . Hentet 8. juni 2010. Arkiveret fra originalen 5. februar 2010.
  3. Kodemetrikker og deres praktiske implementering i subversion og clearcase. Del 1 - Metrics (utilgængeligt link) . Hentet 19. februar 2009. Arkiveret fra originalen 13. september 2011. 
  4. Optælling af kildekodelinjer (SLOC) . Hentet 21. februar 2009. Arkiveret fra originalen 11. februar 2009.
  5. Hvad er nyt i Linux 2.6.32 (downlink) . Dato for adgang: 23. maj 2011. Arkiveret fra originalen 19. december 2013. 
  6. Hvad er nyt i Linux 3.6
  7. Kodelinjer for Linux-kerneversionerne . Hentet 29. juni 2017. Arkiveret fra originalen 17. april 2017.