Devo insistere sul fatto che eseguiamo revisioni del codice prima di ricollegarle al trunk?


10

Richiesto re-post da StackOverflow:

Sto lavorando in un piccolo tempo di sviluppo con tempi di sviluppo molto limitati. Sviluppiamo uno strumento importante per il risultato del nostro lavoro, ma non utilizzato quotidianamente. Sono l'unica persona nella squadra che ha un background come programmatore.

Il mio problema è che sto spingendo per le revisioni del codice prima di ricollegarmi al trunk per oltre un anno. Tutti erano d'accordo su questo, ma è ancora solo il mio codice che è stato rivisto. Di ritorno da una lunga vacanza torno a un baule con commenti in codice poiché "questa è una brutta soluzione - rimuovila al più presto" e "soluzione rapida". La novità è che un ragazzo è stato nominato responsabile dello strumento. (Un ruolo che prima mi è stato offerto, ma ho rifiutato a causa di un motivo non correlato al lavoro.) E pensa che questo sia un modo ok di lavorare: dato che abbiamo un tempo di sviluppo così limitato, dovremmo tagliare angoli del genere.

La mia preoccupazione è che gli altri sviluppatori scrivano brutti codici: spesso rompono l'incapsulamento, scrivono enormi classi, aggiungono classi interne in posti strani, hanno pochi o nessun test unitari e così via. Alla fine sarà impossibile sviluppare ulteriormente lo strumento.

Devo insistere sul fatto che eseguiamo revisioni del codice prima di ricollegarle al trunk o sono solo una puttana di qualità del codice?


3
"Dato che abbiamo un tempo così limitato per lo sviluppo, dovremmo tagliare angoli del genere." -> "Puoi pagarmi ora, oppure puoi pagarmi più tardi." Sono stato due volte e mezzo per revisioni del codice e test unitari e ho sempre avuto la stessa risposta. Naturalmente ora che abbiamo diverse migliaia di righe di codice, tutto il "taglio dell'angolo" sta tornando a perseguitarci.
MetalMikester

La situazione migliorerà man mano che il ragazzo diventa più esperto.
rwong

Risposte:


2

sono stato in situazioni simili prima e immagino che dipenda da "devo mantenere il codice".

Se devo mantenere il codice, piuttosto che desidero un codice di alta qualità, personalmente non ho bisogno di revisioni del codice per ogni commit (cioè i programmatori possono decidere da soli se un determinato codice ha bisogno di una revisione o meno) ma se la leggibilità / manutenibilità soffre di potrebbe essere in ordine.

Durante la lettura di questo:

La mia preoccupazione è che gli altri sviluppatori scrivano brutti codici: spesso rompono l'incapsulamento, scrivono enormi classi, aggiungono classi interne in posti strani, hanno pochi o nessun test unitari e così via. Alla fine sarà impossibile sviluppare ulteriormente lo strumento.

Penso che il tuo problema sia più grande della semplice revisione del codice. Sembra che manchi alcune linee guida e / o che non siano implementate. Non avere / pochi test unitari potrebbe essere una cattiva idea ma dipende dal caso specifico. Tuttavia, breaking encapsulation, writing huge classes, ...crea davvero un codice soggetto a bug in modo che debba essere risolto definitivamente.


6

Penso che la revisione del codice e il mantenimento di alcune linee guida sulla codifica sia una buona idea, ma penso che farlo per ogni check in sia una perdita di tempo. È una buona idea quando si crea un team e con giovani programmatori, ma i programmatori esperti possono pensare da soli e alla fine dovrai fidarti di loro. Detto questo, puoi fare le revisioni periodiche del codice per ricominciare da capo, ma guardare ogni singola riga di codice che entra nel tuo VCS lo sta davvero esagerando.

E un piccolo commento riguardante le correzioni del tuo collega: alcune volte fare una brutta soluzione è la soluzione corretta . Può darsi che questo particolare codice non sia abbastanza importante per investire un sacco di tempo, potrebbe essere che la soluzione semplice sia abbastanza buona ed è meglio investire tempo in altre cose. Rendere il tuo codice "carino" non è il tuo obiettivo principale come programmatore. Il tuo obiettivo principale è quello di consegnare e ossessionare ogni riga di codice semplicemente non ti porterà lì.

Quello che sto cercando di dire è che devi scegliere le tue battaglie. Va bene perdere la battaglia su qualche insignificante classe di utilità per vincere la guerra di consegna (o questa guerra del sottosistema DAVVERO IMPORTANTE, del resto).


3

Se il programma in questione non è un prototipo usa e getta una tantum, penso che le revisioni del codice dovrebbero essere obbligatorie per ogni check-in.

Gli sviluppatori senior potrebbero avere il privilegio di effettuare il check-in senza revisione, una volta che sono abbastanza coscienziosi da richiedere una revisione, se del caso.


1

Non è sicuro che la revisione del codice sia la risposta fino a quando qualcuno non inizierà a imporre standard di codifica migliori. Qualcuno scrive un codice scadente, lo commenta / lo ammette e lo controlla comunque. A che serve una recensione se qualcuno vuole rifiutare il codice, ma ti metterà in ritardo?

Avrai bisogno di: stabilire degli standard, supervisionare più da vicino i principali colpevoli e mettere in testa che un buon codice non richiede sempre più tempo per scrivere. Devono smettere di usare le tempistiche come scusa per rifiutare di cambiare cattive abitudini.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.