Counting lines of code and comments is sometimes bogus, since most of
what we write may be written in one or more lines, depending column
count limitations, screen size, style and so forth.
Quando fai qualcosa con linee di codice, hai bisogno di una definizione coerente di cosa sia esattamente una "linea di codice". Devi sapere se stai contando le linee fisiche di codice o le linee logiche di codice e cosa costituisce esattamente una "linea di codice".
Ad esempio:
for (int i = 0; i < array.length; i++) {
boolean truthValue = processElement(array[i]);
if (truthValue) {
break;
}
}
Questo potrebbe essere considerato 6 linee fisiche, 4 linee logiche o qualcos'altro interamente.
Inoltre, sono necessarie regole per lingua, basate su uno stile di codifica che può essere applicato coerentemente tra i progetti. È un fatto che 3 linee di Python non sono uguali a 3 linee di Java non è uguale a 3 linee di Objective-C. Tuttavia, 3 linee di Python devono sempre essere 3 linee di Python, 3 linee di Java devono sempre essere 3 linee di Java e 3 linee di Objective-C devono sempre essere 3 linee di Objective-C.
Inoltre, i commenti e il codice dovrebbero essere contati separatamente. Ad esempio, in un commento, ho detto che una linea di codice può essere utilizzata in Six Sigma come "opportunità". In questo non dovrebbe essere incluso un componente non eseguibile. Inoltre, il confronto di un rapporto di commenti / righe di codice non è necessariamente significativo poiché un codice ben organizzato dovrebbe richiedere meno commenti per iniziare. Sarei molto più attento a contare i commenti che a contare il codice, oltre a identificare una netta mancanza di commenti (soprattutto nelle API pubbliche o nei sistemi che utilizzano la generazione automatica di documentazione) o commenti eccessivi, come le opportunità di migliorare la documentazione o il refactoring (o rimuovere commenti inutili, potenzialmente obsoleti).
Since the most used languages (say C, C++, C# and Java) are free-form,
wouldn't it be more clever to count characters instead?
Io non la penso così L'intelligenza non ti compra nulla - se provi qualcosa di intelligente, probabilmente ti stai sparando ai piedi, o con altre persone che cercano di capire le tue intenzioni. Devi mantenerlo semplice . La linea e la dichiarazione sono i mattoni fondamentali di un'unità di codice. Ogni lingua ha un concetto di affermazione - un unico, significativo, blocco. Il tuo stile di codifica dovrebbe specificare come formattare le tue affermazioni in linee. Quindi, rendendo sia le istruzioni che le righe misurazioni coerenti tra i progetti (scritte nella stessa lingua) da confrontare.