Nella mia esperienza, il modo migliore è quello di lasciare che il team del buco faccia la revisione del codice. Utilizziamo una mailing list di commit in ogni progetto in cui è possibile seguire tutte le modifiche al codice del sistema di controllo della versione. La maggior parte dei nostri sviluppatori si sono iscritti alla loro mailing list specifica per il progetto perché sono interessati alle modifiche al codice.
Quando qualcuno nota un brutto modo nel nuovo codice sorgente o spiega al committer come può farlo in un modo migliore, se il committer è un tirocinante, o inizia una discussione a riguardo, se è stato un committer più esperto .
Ovviamente questo metodo non garantisce che tutto il nuovo codice venga revisionato, specialmente in momenti di stress quando nessuno dei membri del team ha il piacere di seguire ogni cambio di codice. Inoltre, non tutti gli sviluppatori sono responsabili per garantire che ogni sviluppatore faccia il proprio lavoro, ma di questo non si può garantire che venga esaminato. Ma, almeno nei nostri team, c'è sempre un responsabile tecnico responsabile della qualità tecnica.
Sono un vero fan delle recensioni di codice se sono conformi ai seguenti punteggi:
- ogni sviluppatore ha la possibilità di rivedere tutto il codice e gli argomenti a suo parere
- nessuno ha il diritto di abusare del codice altrui
- non solo il codice errato attiva una discussione ma anche un buon codice
- le discussioni si concludono con felicità per ogni persona coinvolta
- la revisione avviene quasi in tempo reale, almeno prima che la funzionalità sia completata
Quello che ho imparato è che se sei qualcuno che esamina ogni riga di codice e pensa di dover controllare cose come la qualità del codice in termini di formattazione del codice o efficienza del codice, allora sei molto inefficiente perché fai cose che macchine può fare per te. L'obiettivo dovrebbe essere quello di utilizzare un sistema di integrazione continua che controlli la qualità di creazione e di codice di ciascun contributo del codice. Se questo sistema genera report e li invia ai contributori, tutto è perfetto.
Devo ammettere che se devi rivedere il codice perché devi controllare, o per classificare la qualità di un programmatore, i miei suggerimenti non hanno senso. In questo caso non vorrei rivedere il codice sorgente riga per riga. Vorrei rivedere cose come:
- ci sono problemi relativi alla sicurezza
- sono le API utilizzate
- il codice ha applicato l'architettura specificata
- ha scritto test utili (ma solo se è stato istruito implicito, ho dovuto imparare)
- Documentazione
- build-processo
- ... e altro ancora, probabilmente
Se sei uno sviluppatore esperto, sicuramente troverai sempre cose come loop che potresti fare con prestazioni migliori. Naturalmente è utile spiegare ad altri tale conoscenza ma questo non dovrebbe essere parte della sessione di revisione. Se ci sono problemi di prestazioni significativi, allora non perché lui (o lei) ha usato una variante meno efficiente di un tipo di lista.
Poiché la domanda iniziale era il motivo per cui alcune persone sembrano fare una recensione migliore in quanto altre persone risponderei che queste persone magari fanno un'anteprima prima dell'inizio della vera revisione, significa che probabilmente sono state preparate da loro in modo che sappiano esattamente cosa voglio rivedere.