Il seguente metodo per confrontare i codici sorgente o lo sforzo di lavoro è affidabile? [duplicare]

-1

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 tra effort_factor misurato inizialmente e effort_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 di avg_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?

    
posta Sreram 27.12.2016 - 22:53
fonte

1 risposta

5

The basic idea of this method is to count the number of methods instead of the code-lines.

Bene, ecco il tuo problema

La ragione per cui il conteggio LOC non funziona è perché un programmatore può passare giorni a ottenere un'espressione regolare a una riga giusta o può eseguire un'istruzione di stampa a una riga in 2 secondi. Se li paghi per loc, scriveranno un mostro di 5 pagine che fa ciò che fa la regex.

Il conteggio del numero di metodi ha lo stesso problema. In quanti modi vuoi davvero incoraggiarmi ad implementare toString ()?

Il codice semplicemente non è qualcosa che puoi guardare e decidere quanti sforzi ci sono stati fatti. Potresti guardare a qualcosa che è stato rivisto 5 volte che ha sostituito 7 lezioni e ci è voluta una settimana solo per disaccoppiare dal framework che non usiamo più per non parlare del lavoro della lavagna e delle riunioni che sono state prese per prendere queste decisioni.

Quindi lo sforzo non è qualcosa memorizzato nel codice. Dubito che sia anche nel controllo del codice sorgente.

L'unica metrica valida che conosco per il codice non riguarda nemmeno lo sforzo. Si tratta di qualità. Che è più importante comunque. È questo:

La domanda più interessante:

I want a feasible way to compare my project with my friend's project.

Quando confronti la tua auto con quella dei tuoi amici non lo fai guardando sotto il cofano. Lo fai in pista.

Chiedi a tua madre di usare i tuoi programmi per realizzare qualcosa e conta le domande che chiedono prima che finiscano.

La mamma è un ottimo tester per i prodotti.

    
risposta data 27.12.2016 - 23:45
fonte

Leggi altre domande sui tag