Gli strumenti che elenchi non hanno nulla a che fare con le revisioni del codice. Sono lì esattamente per consentire ai revisori di concentrarsi su argomenti più utili.
Le revisioni del codice sono per cose importanti che non possono essere automatizzate : utilizzando un modello di progettazione quando un altro corrisponde meglio, la codifica eccessiva del codice chiaro o sottodelocumentazione poco chiara, non utilizzando le caratteristiche del linguaggio che possono rendere codice più corto e più leggibile. Tutte queste cose sono "troppo intelligenti" per una macchina: un programma, non importa quanto sia sofisticato, non sarà in grado di dire se la vostra applicazione di pattern di fabbrica astratta è una buona idea in un dato contesto o no. Ecco perché le revisioni del codice vengono eseguite da persone, spesso sviluppatori più esperti.
Gli argomenti menzionati durante le revisioni del codice sono spesso soggettivi . Uno sviluppatore dirà che questo metodo specifico dovrebbe essere diviso in due. Un altro altrettanto esperto considererà che il metodo va bene e fa esattamente una cosa. Un recensore troverà una dichiarazione goto
terribile; il suo collega potrebbe scoprire che, in questo caso particolare, goto
va bene e non può essere rimosso senza che ciò comporti un codice meno leggibile.
Gli strumenti di stile, d'altra parte, sono l'archetipo dell'automazione delle regole puramente oggettive, di base, anche a volte stupide . La linea 273 è troppo lunga. Hai dimenticato una lettera maiuscola. E qui, manca uno spazio. E qui, ho trovato due righe vuote invece di una. Boooring.
Non perdere tempo a nessuno durante le revisioni del codice. Se c'è una guida di stile nel tuo progetto, usa il controllo dello stile (come pep8
) ma eseguilo automaticamente tramite il gancio di pre-commit. Spazio mancante? Nessun impegno per te, signore. Una riga vuota contiene spazi bianchi? Per favore rimuovilo se vuoi il tuo codice nel controllo della versione.
In effetti:
-
Poiché le regole sono obiettive e semplici, non c'è nulla da discutere durante una revisione del codice. C'è spazio bianco in una riga vuota. Quindi rimuovilo. Cosa ti piacerebbe raccontare a riguardo durante una revisione del codice?
-
Peggio, può portare a discussioni che sono quasi costruttive. Per alcuni, le recensioni di codice diventerebbero un'opportunità per discutere i meriti del loro stile preferito , perché, francamente, tutti sanno che due spazi sono meglio di quattro, e ora, la revisione del codice si concentra su "Dovrebbe cambiamo il nostro stile di codice e riscriviamo l'intero codice base per utilizzare due spazi anziché quattro ". Evita questo a tutti i costi.
Il rimanente, il materiale troppo complicato per una macchina, è per le revisioni del codice, permettendo ai revisori di concentrarsi su cose che contano davvero.
Il controllo automatico, sarebbe il controllo dello stile, la compilazione, i test, l'analisi statica o la prova formale, dovrebbe essere, beh, automatizzato. Dove dovrebbe essere nel processo di integrazione continua è un argomento diverso. Controlli brevi e veloci, come il controllo dello stile, possono essere inseriti direttamente in un hook pre-commit per evitare qualsiasi codice non conforme nel codice base. Controlli lunghi, come l'analisi statica, verranno solitamente eseguiti durante la compilazione.
Ricorda, se hai un argomento che:
- Non ha una risposta diretta, la risposta è basata sull'esperienza personale e sulle ipotesi formulate,
- Risultati non binari "bene, può essere A, ma B può essere accettato qui, mentre C sembra un po 'problematico, ma sarà un'ottima soluzione se questo fosse" risposte in stile,
- Non può essere automatizzato anche con le applicazioni più sofisticate,
- Non può essere facilmente portato su un altro contesto,
- È incentrato sulla qualità del codice, sulla leggibilità, sull'espressività e sulla manutenibilità,
recensioni di codice potrebbero essere un buon posto per questo. D'altra parte, se il soggetto:
- È puramente oggettivo e senza ambiguità,
- Risultati in una risposta binaria, spesso basata su una metrica,
- Può essere automatizzato (a volte richiede molto di lavoro e ricerca),
- Si applica a tutte le situazioni nello stesso gruppo,
- È incentrato sulla qualità del codice, sulla leggibilità, sull'espressività e sulla manutenibilità,
i hook pre-commit o la build sono posti molto migliori di una revisione del codice.
Ulteriori letture: