Non dovremmo contare i caratteri di codice e commenti invece delle righe di codice e commenti? [chiuso]

2

Il conteggio delle righe di codice e commenti a volte è fasullo, poiché la maggior parte di ciò che scriviamo può essere scritto in una o più righe, a seconda delle limitazioni del conteggio delle colonne, delle dimensioni dello schermo, dello stile e così via.

Poiché i linguaggi comunemente usati (come C, C ++, C # e Java) sono a forma libera, non sarebbe più intelligente contare i caratteri?

Modifica: non sto considerando la LOC programmazione orientata dove i codificatori tentano per soddisfare artificialmente i requisiti aggiungendo commenti irrilevanti o utilizzando più righe dove meno sarebbe sufficiente (o il contrario). Sono interessato a metriche migliori che sarebbero indipendenti dallo stile di codifica, da utilizzare da programmatori onesti.

    
posta Gabriel 26.10.2011 - 15:32
fonte

6 risposte

3

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.

    
risposta data 26.10.2011 - 15:55
fonte
7

La visualizzazione di LOC è una metrica errata , direi che il numero di caratteri e / o commenti è proprio come cattivo, se non peggio.

Se inizi a misurare per numero di caratteri, otterrai identificatori molto lunghi.

Se inizi a misurare per numero di commenti (o caratteri nei commenti), riceverai molti commenti irrilevanti con un sacco di padding (posso immaginare di ottenere esposizioni letterarie intere).

    
risposta data 26.10.2011 - 15:34
fonte
3

Dimentica entrambi gli approcci. Conta il numero di test di accettazione degli utenti che superano.

Molto intelligente.

    
risposta data 26.10.2011 - 15:39
fonte
1

Non necessariamente, dal momento che potresti motivare le persone a scrivere nomi di variabili veramente, molto, molto, molto lunghi e quindi offuscare il codice. Una linea mappa un'istruzione in molti stili di codifica, quindi è spesso un indicatore migliore della quantità di codice.

Potresti ovviamente usare parole di codice (WOC) per ovviare a questo. Ma non penso che nessuna metrica di codice basata sull'output di wc sia migliore dell'altra, e tutte sono piuttosto negative.

    
risposta data 26.10.2011 - 15:36
fonte
1

Perché questo è importante, esattamente?

Qualcuno ha mai detto che un'applicazione fa schifo perché ha solo x numero di righe? Né importa a meno che per qualche ragione scrivere un codice PIÙ sia un vantarsi di cui non sono a conoscenza. Personalmente, meno codice che scrivi è una pratica migliore, se è leggibile.

Clever? Contare i personaggi potrebbe essere la cosa meno intelligente di sempre. Mai.

    
risposta data 26.10.2011 - 15:37
fonte
1

Tutti sanno che tali parametri sono imperfetti e possono essere ingannati.

Detto questo, quando conto le righe di codice nei miei programmi C, effettivamente conto il punto e virgola, cioè il numero effettivo di istruzioni.

    
risposta data 26.10.2011 - 15:45
fonte

Leggi altre domande sui tag