Devo essere disturbato se il mio rapporto LOC / giorno è troppo alto? [chiuso]

9

Attualmente sto lavorando a un progetto indipendente, quindi non ho esattamente il lusso di test umani o revisione esterna del codice - tuttavia, non vedo alcun bug difficile nel mio codice corrente (li fisso come Li vedo, e il più delle volte sono solo nomi di campi sbagliati e cose del genere che risolvono in un minuto o due) e lo collaudo dopo aver implementato qualsiasi funzione prima di spingerlo. Ultimamente il mio numero LOC era di circa 400 al giorno (per la cronaca, è C #), e non sto solo implementando nuovi sistemi, ma riscrivo anche cose che ho già scritto e correggo alcuni bug.

Devo essere disturbato? È il segno che devo interrompere e rivedere tutto il codice che ho scritto fino a questa data e refactarlo?

    
posta Max Yankov 12.03.2012 - 10:12
fonte

7 risposte

18

LOC è probabilmente una delle metriche più abusate e, di conseguenza, è probabilmente una delle misure più inutili della qualità del codice e una misurazione ancora più inutile dello sforzo di programmazione.

Sì, è una dichiarazione audace da parte mia, e no, non posso indicarti degli studi che dimostrino il mio punto. Tuttavia, posso affermare con molta esperienza che quando inizi a preoccuparti di quanto codice hai scritto, probabilmente ti stai preoccupando dei problemi sbagliati.

Per prima cosa è necessario chiedersi che cosa si sta tentando di misurare o dimostrare, e se questa prova è semplicemente fuori interesse, o per supportare un miglioramento della qualità più ampio e dove è necessario utilizzare queste informazioni per ottenere il buy-in dal tuo team / gestione per fare qualcosa al riguardo.

Una delle cose che tendo ad usare LOC per è un po 'un controllo di sanità mentale. Se mi ritrovo a scrivere molto codice, divento più interessato a LOC per metodo, a LOC per classe, piuttosto che a LOC su tutto. Queste misure potrebbero essere indicatori che hai ulteriormente rifatto a fare se ti senti un po 'OCD su quanto dovrebbe essere ben fattorizzato il tuo codice. Le classi molto grandi potrebbero devono essere refactored in alcune classi più piccole e lunghi metodi multilinea potrebbero essere suddiviso in diversi metodi, in altre classi, o può anche indicare alcune ripetizioni che potrebbero essere rimosse. Notate che ho usato la parola "potrebbe" diverse volte lì.

La realtà è che LOC fornisce solo un possibile indicatore e nessuna garanzia reale che il tuo codice possa dover essere modificato. La vera domanda da porsi è se il codice si comporta come richiesto e come previsto. In tal caso, la tua prossima domanda è se sarai in grado o meno di mantenere il codice facilmente e se avresti il tempo ora o in futuro di apportare modifiche al codice funzionante per ridurre i costi di manutenzione in futuro.

Spesso, un sacco di codice significa che ne avrai di più da conservare in seguito, ma a volte anche codice ben calcolato può estendersi a centinaia di righe di codice, e sì, a volte puoi trovarti a scrivere centinaia di righe di codice in un giorno. L'esperienza tuttavia mi dice che se sto sostenendo un output di centinaia di righe di nuovo codice ogni giorno, che spesso c'è il rischio che gran parte del codice sia stato tagliato e incollato in modo inappropriato da qualche altra parte, e che di per sé possa indicare problemi con duplicazione e manutenzione, ma ancora una volta non è una garanzia, quindi tendo a fare affidamento su ciò che la mia esperienza e il mio istinto mi dicono in base a come sono stati completati i compiti da svolgere.

Il modo migliore per evitare il dilemma posto nella tua domanda IMHO è dimenticare LOC e refactoring TUTTO il tempo. Scrivi prima il test del codice, implementa in errore, il refactoring passa, quindi vedi cosa può essere refactored lì e quindi per migliorare il codice. Lascerai l'incarico sapendo che hai già ricontrollato il tuo lavoro e non sarai così preoccupato di pensare a te stesso in futuro. Realisticamente parlando, se utilizzi un approccio test-first come ho descritto, qualsiasi misura di LOC / giorno sul tuo codice completato significherebbe davvero che hai scritto 3-5 volte l'importo misurato, con tale sforzo nascosto con successo dal tuo refactoring in corso sforzi.

    
risposta data 12.03.2012 - 11:07
fonte
5

Assolutamente no - alcuni giorni stai correggendo un bug difficile da trovare e cambi solo una linea. Altri giorni stai aggiungendo un nuovo codice e scrivi diverse migliaia di righe.

La LOC giornaliera non ti dice nulla tranne che le attività per quel giorno potrebbero essere eseguite con 400 linee di codice.

    
risposta data 12.03.2012 - 10:40
fonte
2

Alcune di queste risposte mancano il punto, non si utilizza LOC come misura della produttività (se foste in quel caso non dovreste preoccuparvi di essere troppo "produttivi"), ciò che state facendo in realtà è preoccupante per il vostro qualità del codice perché il codice è il nemico questa è una buona cosa di cui preoccuparsi.

Sfortunatamente l'unico modo per conoscere la qualità del codice è la revisione del codice, dato che sei un team di un solo uomo questo sarà complicato, anche se ti sei fermato a rivedere il tuo codice (e non vuoi davvero smettere, giusto? ) rivedere il tuo codice non rivelerà tanto quanto un peer che sta rivedendo il tuo codice. Ti suggerirei di provare a chiedere a qualcun altro di rivedere almeno parte del tuo codice in modo da poter capire se il tuo 400 LOC / giorno sta sfornando parole senza senso o meno. Anche una recensione indipendente del codice di un giorno ti aiuterà

    
risposta data 12.03.2012 - 11:19
fonte
1

Non dovresti preoccuparti del numero di LOC che produci al giorno.

Ma dovresti essere disturbato:

  • se il tuo codice non è testato (se ad esempio non hai test unitari)
  • se inizi a riscontrare problemi nell'aggiunta di nuove funzionalità o nella modifica delle funzionalità implementate (il che significa che il tuo refactoring non era corretto)
  • se la tua esperienza non è grande e il tuo codice non viene esaminato (è probabile che un paio di occhi in più rilevino problemi)
risposta data 12.03.2012 - 11:07
fonte
0

LOC è una misura di produttività "ufficiale", ma gli argomenti contro il suo valore potrebbero essere lunghi (un ORM potrebbe generare 50.000 righe di codice in 3 minuti, tuttavia, se il progetto del database è sbagliato tutto quel codice potrebbe andare nel cestino ).

Ti suggerisco di misurare i tuoi progressi tenendo traccia di% attività completate vs tempo rispetto a% attività pianificate da completare. Questo è ciò che conta. I clienti pagano per codice di lavoro che fornisce valore aziendale non per le LOC.

Alcuni riferimenti a LOC

risposta data 12.03.2012 - 11:07
fonte
0

Stai anche misurando il numero di duplicati di codice ?

Se l'output elevato è dovuto al fatto che hai molto copia e incolla nel tuo codice, dovresti preoccuparti.

Motivo: in caso di errore nella tua copia e incolla, è difficile e soggetto a errori correggere tutti gli usi della copia e incolla

    
risposta data 12.03.2012 - 12:36
fonte
-1

Se credi nel bellissimo codice funzionale, allora quella dovrebbe essere la tua unica misura

"Does it flow? does it look beautiful?"

    
risposta data 12.03.2012 - 10:34
fonte

Leggi altre domande sui tag