Standard / modo corretto di contare le righe di codice?

6

Come devo contare le righe di codice in un progetto?

Ad esempio in C ++ dovrei contare le righe dei file di intestazione con la mia definizione di classe? Devo contare l'intestazione di una libreria (non standard) con cui sto collegando?

In Qt (o in qualsiasi altro framework della GUI), dovrei contare le linee del design del modulo?

Devo contare anche il Makefile?

Chiedo perché è un modo semplice per misurare la dimensione del progetto e / o lo sforzo richiesto. Anche se un file GUI non è codice per sé , il programmatore potrebbe aver trascorso ore a farlo.

EDIT Molti di voi non hanno capito la domanda e / o assumono che io voglia utilizzare il magico numero di LOC come metrica UNICA E SOLO per valutare un progetto o anche una giornata di lavoro .

Considero un giorno negativo della LOC un giorno molto bello. Significa che sono riuscito in qualche modo a capire e modellare il problema in modo migliore e più efficiente. Commenti come "Perché hai bisogno di questo" non sono interessanti.

Piaccia o no, il numero è là fuori, Wikipedia dice che Windows XP è valutato a 45M LOC, Linux 2.6.35 a 13.5M, potrei andare avanti.

Forse avrei potuto chiedere di meglio.

Comunque, il mio intento originale era sapere come venivano calcolati quei numeri in Wikipedia e non la loro natura soggettiva.

L'ho trovato in un blog MSDN, molto utile in quanto mostra come VS2008 lo fa:

    
posta Vinicius Kamakura 11.08.2011 - 16:23
fonte

9 risposte

6

Per la maggior parte, non ha molta importanza se si dispone di uno standard e sono coerenti tra i progetti nello stesso linguaggio di programmazione. Generalmente devi creare un documento che spiega come contare le linee di codice sorgente e come configurare gli strumenti che usi per utilizzare questo metodo.

In C++ for example, should I count the lines of the header files with my class definition?

Lo farei. Dopo tutto, li hai scritti e vengono utilizzati nel processo di compilazione del tuo software.

Should I count the header of a (non standard) library I am linking against?

Sì, puoi, se stai monitorando il riutilizzo del codice. Se hai la capacità di contare le righe di codice di altri progetti (sia tuoi progetti personali che open source), puoi considerare che il riutilizzo del codice e utilizzarlo quando si calcolano varie metriche relative al riutilizzo.

In Qt (or any other GUI framework), should I count the lines of the form's design?

Se li hai scritti, io dico di sì. Se fossero generati automaticamente, allora forse. Se lo fai una volta, dovresti farlo in modo coerente. Forse vuoi considerare di contare il codice generato separatamente rispetto al codice scritto a mano.

Should I count the Makefile too?

Direi di no, in quanto è uno strumento di supporto e non fa parte dell'applicazione creata. Di nuovo, tornando alla domanda del framework GUI, se è autogenerata, forse si vuole contarlo separatamente. O forse vuoi contare separatamente "build scripts" e includere cose come Makefile, script Ant e così via.

    
risposta data 11.08.2011 - 17:03
fonte
5

Dici che è un modo semplice per misurare le dimensioni di un progetto. Se vuoi misurare la dimensione, perché non ottenere solo la somma dei file di tutti i file che partecipano al progetto? O potresti scomporlo per tipi di file (intestazioni, codice generato, binari come file immagine, makefile, ecc ...).

Misurare un progetto per il numero di byte che è rispetto a LOC ti aiuta a evitare problemi in cui linee di codice molto semplici (come x=1; o { ) vengono contate come linee molto lunghe. Tuttavia, non è perfetto, quindi potresti prendere in considerazione i clienti per diversi tipi di risorse e anche per il numero di risorse di vario tipo.

Misurare lo sforzo effettivo non sarà mai uguale alla dimensione del progetto stesso. Cosa succede se sono state spese 5 ore di lavoro per modificare i valori di 6 variabili per ottenere il comportamento giusto ? La dimensione totale del progetto (per numero di byte o LOC o qualsiasi altra cosa) potrebbe anche non cambiare affatto, ma c'era ancora uno sforzo per apportare modifiche.

    
risposta data 11.08.2011 - 16:29
fonte
2

Probabilmente dovresti cercare qui la tua risposta:

link

link

    
risposta data 11.08.2011 - 16:29
fonte
2

How should I count the lines of code in a project?

Se questa è solo una misura approssimativa del lavoro, tutto quello che vorrei fare è:

# This assumes you build obj/lib/executables into a seprate tree hierarchy
find . | xargs wc -l

In C++ for example, should I count the lines of the header files with my class definition? Should I count the header of a (non standard) library I am linking against?

Conterei ogni cosa nel tuo albero dei sorgenti che costruisci. Ma non le cose a cui ti colleghi (puoi contarle separatamente).

In Qt (or any other GUI framework), should I count the lines of the form's design? Should I count the Makefile too?

Ogni cosa che fa parte del progetto che implicava uno sforzo di scrittura dovrebbe probabilmente essere conteggiata. Se c'è qualcosa di veramente enorme che non richiede alcuno sforzo, posso rimuovere manualmente il suo conteggio dal totale. Ma questo non è qualcosa che spendere un sacco di tempo a capire quali sono le cose migliori da contare.

    
risposta data 11.08.2011 - 19:57
fonte
2

Le metriche del software sono, in genere, un relitto abbastanza soggettivo, ampiamente aperto all'interpretazione e alla reinterpretazione. Probabilmente l'unico veramente significativo per un estraneo è difetti registrati per anno per versione .

Le linee di codice variano tra programmatori, lingue, stile di commento, stile di rinforzo, corporazioni e livelli di esperienza.

Naturalmente, più scrivi, più bug hanno la possibilità di emergere, quindi la crescita LoC è proporzionale al numero potenziale di bug.

Detto questo:

wc -l *.lisp

è il modo in cui conto il mio LoC e funge da metrica approssimativa di "quanto lavoro ho fatto".

Un altro modo è churn , che è il numero di righe aggiunte, rimosse e modificate nel tempo in una base di codice. Questo può essere estratto dal tuo sistema di controllo della versione.

    
risposta data 11.08.2011 - 22:11
fonte
1

Non esiste un modo perfetto per contare il codice. Trova un metodo e usalo e usalo in modo coerente. Se si utilizza un meccanismo per un progetto e un meccanismo diverso per un altro progetto, i numeri non significano nulla. Se usi lo stesso sistema per tutti i tuoi progetti, i numeri non significano ancora niente ma almeno ti danno un'idea approssimativa delle dimensioni del progetto l'una rispetto all'altra.

    
risposta data 11.08.2011 - 16:35
fonte
1

Molte persone hanno reagito in modo negativo a questa domanda. Vorrei, invece, considerarlo un'opportunità.

Quasi l'unica scusa ragionevole per contare le righe di codice è che è stato richiesto da qualcuno più in alto nella catena alimentare (che è chiaramente all'oscuro, o non lo chiederebbe). In quanto tale, dovresti coinvolgerla - preferibilmente fare qualcosa come dirigere un comitato (che include il meno utile possibile dei tuoi colleghi di lavoro) ricercando il / i modo / i più efficace per contare le righe di codice.

Per quanto riguarda il metodo specifico in sé, decisioni così importanti richiedono ovviamente l'input dell'intero comitato. Il tuo compito è quello di fornire loro un sacco di dati grezzi, misurando linee di codice in ogni modo possibile (almeno senza impiegare più di un minimo di sforzo). Dovresti, comunque, misurare la velocità con cui fornisci queste informazioni - se, ci mancherebbe il cielo, si avvicinano a una decisione finale, devi dare loro una nuova eccitante opzione che li costringa a tornare al tavolo da disegno passare almeno qualche mese in più a studiare il problema e considerare il modo migliore per incorporare questa nuova opzione in una strategia di conteggio delle righe a livello aziendale!

Questo ha due buoni effetti. Prima di tutto, ovviamente li distrae da altre cose che potrebbero essere più dannose per la produttività. In secondo luogo, puoi rafforzare la loro autostima fornendo loro almeno un piccolo dato che alla fine si renderanno conto che è ancora più inutile del resto, così quando scrivono le loro linee guida su tre volumi sui modi appropriati per contare le righe di codice, loro può fare alcune buone e solide raccomandazioni su almeno un paio di cose da evitare, così alla fine di tutto ciò che possono davvero sapere di aver realizzato qualcosa di utile. Inoltre, ti mostreranno dei semplici peon che senza la loro brillante e esperta guida, faresti ogni sorta di errori folli in questo compito cruciale.

Affinché tu possa scambiare questo aspetto con interamente faceto, sottolineo che questo è davvero importante - senza qualcosa del genere per occupare il loro tempo, inizieranno a studiare qualcosa come Conformità ISO 9001. Nel momento in cui decidono di andare avanti con qualcosa del genere, potresti anche scrivere almeno un mese solido che sarà dedicato alla stesura della documentazione dettagliata di come fai il tuo lavoro (che, per darti la speranza di superare un'ispezione , terminerà con qualcosa del tipo: "e se nessuna di queste funzioni, eserciteremo il nostro giudizio e faremo ciò che sembra ragionevole.") Con un po 'di attenzione nella sua applicazione, un piccolo investimento nel software di conteggio delle righe può prevenire, o almeno ritardare, tali disastri per un tempo considerevole.

    
risposta data 12.08.2011 - 15:59
fonte
0

Non sono sicuro se questo si qualifica come una risposta, ma penso che il modo con cui contate le linee di codice dovrebbe dipendere dalla lingua utilizzata. E forse dovresti pensare a usare una misura alternativa, come la percentuale dei requisiti del progetto soddisfatti.

Ho lavorato a un progetto Perl diversi anni fa e, aggiungendo le funzionalità, il conteggio delle code code è diminuito a causa del riutilizzo del codice e di altri fattori. Quindi il progetto al 50% completo aveva effettivamente più linee di codice sorgente del progetto al 100% completo.

Forse dovresti contare le linee totali di codice scritte, e quindi il conteggio salirà sempre, perché anche quando rifatti il codice, e magari riduci il conteggio delle righe, stai creando nuove linee di codice per sostituire quelle vecchie.

    
risposta data 11.08.2011 - 21:04
fonte
0

Mi dispiace, non posso resistere alla citazione Dijkstra :

My point today is that, if we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent": the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger.

Guarda, se davvero devi contare le righe, usa wc -l , applica un fattore fudge e se qualcuno conosce un modo migliore, lascia che lo facciano!

    
risposta data 11.08.2011 - 23:42
fonte

Leggi altre domande sui tag