Voglio un modo fattibile per confrontare il mio progetto con il progetto del mio amico. Per prima cosa ho pensato che fosse sufficiente confrontare in base al numero di linee di codice. Ma per qualche ragione, la gente continuava a dire "LOC non è una buona misura".
Quindi, è il seguente metodo (ho cucinato me stesso e non so se c'è qualcosa di simile) abbastanza buono da confrontare il mio progetto con il progetto del mio amico?
Possiamo calcolare effort_factor
utilizzando il seguente algoritmo:
effort_factor = 0
mini_method = 0.01
proper_method = 1
min_avg_LOC_of_each_method = 6
for each_class in source_code:
avg_LOC_of_each_method = LOC(each_class)/no_of_methods(each_class)
for each_method in each_class:
if avg_LOC_of_each_method < min_avg_LOC_of_each_method:
avg_LOC_of_each_method = min_avg_LOC_of_each_method
if LOC(each_method) < avg_LOC_of_each_method:
effort_factor += mini_method
else:
effort_factor += proper_method
return effort_factor
Definizioni per i simboli utilizzati qui:
-
effort_factor
: la quantità misurata di sforzo fornita dallo sviluppatore (Se lo sviluppatore manteneva un codice esistente, la differenza assoluta traeffort_factor
misurato inizialmente eeffort_factor
finale deve essere il fattore di sforzo contributivo dello sviluppatore ipotizzando non ha ridotto la funzionalità del codice sorgente rimuovendo eventuali funzionalità esistenti ). -
mini_method
: il valore del punteggio (o peso) assegnato a metodi che contengono un numero di righe di codice inferiore alla media. -
proper_method
: il valore del punteggio (o peso) assegnato ai metodi che contengono un numero di linee di codice superiore alla media (si presume che questi metodi siano di vitale importanza per l'attività riportata dalla classe). -
min_avg_LOC_of_each_method
: nei casi in cui esistono classi senza metodi che superano 6 righe di codice, è necessario garantire che tutti i metodi della classe siano considerati mini-metodi (piccoli metodi). Questa costante che garantisce che il valore diavg_LOC_of_each_method
non arrivi mai al di sotto di 6. -
avg_LOC_of_each_method
: contiene il numero di righe di codice per metodo in una classe. -
LOC()
: calcola il numero di righe di codice (per una classe o un metodo).
L'idea di base di questo metodo è contare il numero di metodi invece delle code-line. Inoltre, possiamo supporre che i metodi che hanno un numero di linee troppo basso non aggiungano molto valore al codice, in quanto non possono risolvere alcun problema vitale. Allo stesso tempo si possono assumere metodi con molte linee di codice per risolvere un problema vitale e quindi avere un valore di peso maggiore.
Questo metodo è fattibile per misurare e confrontare i codici sorgente? O ci sono dei difetti?