Come gestire le recensioni di codice nel mio nuovo posto quando vengo da quella pratica?

32

Il team nella mia nuova società non ha un processo di revisione del codice.

Vengo da aziende con la revisione del codice come una cultura obbligata e quindi non mi sento a mio agio nell'impegnare il mio codice senza averlo rivisto da qualcuno.

Sono fermamente convinto che la revisione del codice sia un modo per migliorare la qualità e risparmiare tempo perché rileva i potenziali problemi in precedenza (nota che non sto parlando della programmazione della coppia).

  • Come faccio a dimostrare che la revisione del codice non è una perdita di tempo ma un risparmio di tempo?
  • È possibile saltare la revisione del codice in caso di test unitari?
posta jparkcool 05.11.2014 - 08:31
fonte

10 risposte

31

Can code review be skipped if you have unit tests?

Ma perché?

Il ruolo principale della revisione tra pari non è quello di individuare i bug.

Sì, potresti identificare alcuni potenziali bug e un codice dubbio e soggetto a bug, questo spesso accade, ma occasionalmente individuare alcuni errori non significa che la peer review sia un modo affidabile per escludere il presenza di bug Lontano da quello. Non è lo strumento giusto per verificare la correttezza funzionale dell'implementazione.

La revisione del codice applica la manutenzione del codice , tuttavia. Chiederò che il codice sia pulito e comprensibile (non solo per il suo autore) prima che entri in produzione.

La presenza di test unitari è completamente ortogonale a questo. Puoi avere il 100% di copertura del codice e tutti i test che passano per il codice totalmente incomprensibile.

La revisione del codice serve anche a familiarizzare gli altri sviluppatori con il tuo lavoro in modo che sappiano cosa è ciò che è in grado di raccogliere da lì, o gestire segnalazioni di bug mentre sei in vacanza, ecc. Sapendo cosa hai fatto subito può aiutarli a fare bene il loro lavoro - mantenere la base di codici coerente (attenersi a schemi e convenzioni simili in tutta l'app), o evitare la duplicazione del codice.

In uno schema di cose più ampio, si impara e cresce anche come sviluppatore leggendo il codice di altre persone.

I test unitari non possono essere una sostituzione per nessuno di essi. Sì, se sono scritti bene, leggono come documentazione, e dovremmo sforzarci di farlo. Ma ancora una volta questo non si escludono a vicenda con l'esecuzione di peer review, al contrario - tutti i vantaggi della peer review sono ancora vere, il fatto che i tuoi coetanei hanno dei bei test unitari da guardare renderà il processo di revisione più semplice e ancora più vantaggioso piuttosto che ridondante.

    
risposta data 05.11.2014 - 11:42
fonte
24

Are there any studies and statistics showing code review is not a time waster but a time saver?

Non ne conosco. È anche difficile condurre studi di questo tipo, perché sono necessari due team con un compito uguale e realistico di complessità, in cui si utilizzano le revisioni del codice e l'altro non lo fa. Probabilmente dovresti averli per risolvere lo stesso problema , il che significa buttare un sacco di soldi fuori dalla finestra. E avresti bisogno di ripetere l'esperimento abbastanza spesso per ottenere rilevanza statistica, il che aumenterebbe il lancio di denaro per ordine di grandezza.

Se si misura solo l'efficienza delle aziende che utilizzano le revisioni del codice nei confronti di società che non lo fanno, non solo non è chiaro come misurare l'efficienza, ma anche quale sia la causa effettiva. Le recensioni del codice fanno parte di una cultura più ampia. Quale parte di essa rende effettivamente la squadra più efficiente è difficile da dire (e può dipendere molto dalla natura della squadra o del progetto). Oppure la presenza di questa cultura può semplicemente significare che l'azienda è o più piccola o più giovane, ognuna delle quali ha molti effetti. Oppure potrebbe anche essere che la volontà di sottoporsi a recensioni di codice precluda o promuova una sana distanza dal tuo ego;)

Ma non dimenticare: hai la tua esperienza da cui attingere. Fa parte del motivo per cui ti hanno assunto. Quindi, se credi veramente di poter aumentare l'efficienza (e il tuo team ne soffre effettivamente una mancanza), allora comunicalo chiaramente.

Can code review be skipped if you have unit tests?

No. Se credi nell'importanza dei test, in realtà i tuoi test dovrebbero essere la prima cosa da rivedere. Cosa succede se non hanno senso? O se la copertura è pessima? O se testano l'implementazione piuttosto che il comportamento?

    
risposta data 05.11.2014 - 08:57
fonte
5

Tratto da alcune diapositive casuali che ho trovato , ma il duro i dati provengono dal libro completo di Steve McConnell:

Are Code Reviews Useful?

"I believe that peer code reviews are the single biggest thing you can do to improve your code"

Jeff Atwood of Coding Horror at http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html


"Individual inspections typically catch about 60 percent of defects, which is higher than other techniques except prototyping and high-volume beta testing."

Steve McConnell, Code Complete 2nd Edition, page 485

Quella cifra del 60% proviene dal documento IEEE di Shull et al 2002 Cosa abbiamo imparato sul combattimento Difetti che contiene la sezione intitolata:

"Peer reviews catch 60% of the defects"

    
risposta data 05.11.2014 - 21:10
fonte
3

Disclaimer: questa risposta è la mia esperienza personale:)

Ho fatto pessime esperienze con le recensioni di codice nel codice che manteniamo. Perché di solito abbiamo solo una fodera o meno e non c'è molto da recensire.

Ma nei progetti reali ho fatto delle buone esperienze, durante il mio esame il mio allenatore ha revisionato il mio codice regolarmente e mi ha aiutato molto a trovare alcuni errori che ho fatto molto spesso, che non faccio più.

Quindi direi che dipende molto da cosa stai facendo, quante persone sei ecc.

Anche il rischio che le tue visioni in codice finiscano in una guerra non è da sottovalutare.

    
risposta data 05.11.2014 - 12:18
fonte
3

Potresti chiedere al tuo capo squadra e / o al collega di rivedere il tuo codice, anche se le revisioni del codice non vengono eseguite normalmente, forse come parte della tua formazione.

Assicurati che il tuo codice sia ben scritto e testato prima della revisione.

Quando ero un caposquadra ero solito fare revisioni del codice me stesso di nuovi dipendenti, fino a quando (dopo un po ') avrei smesso di trovare bug o qualsiasi altra cosa da criticare nel loro codice, e a che punto avrei smesso di fare recensioni di codice con loro; ciò accadrebbe quando:

  • Hanno imparato i sistemi con cui si interfacciavano e non avevano bisogno delle mie spiegazioni su di esso
  • Hanno imparato a progettare e / o testare il loro codice fino a renderlo privo di errori prima di vederlo
  • Hanno imparato abbastanza sulle mie linee guida per lo stile di codifica che considererei il loro codice mantenibile

Le revisioni del codice hanno diversi scopi:

  • Individuazione dei difetti nel codice
  • Trasferimento della conoscenza tra i membri del team

Penso che sia bello fare recensioni sui codici dei nuovi dipendenti, anche se il team sceglie di saltare le recensioni del codice tra i membri del team esperti.

    
risposta data 05.11.2014 - 18:56
fonte
2

Non esiste una regola per le revisioni del codice da eseguire su qualsiasi software sviluppato ... tutto dipende dallo scopo dell'applicazione, dalle dimensioni del cliente e dalle dimensioni dell'azienda. Ad esempio, se si sta costruendo un'applicazione in cui è una semplice applicazione in cui potrebbero non esserci ulteriori versioni, in futuro saranno implementate le unità di test. Ma ancora una volta la revisione del codice viene presa in considerazione quando si parla di prestazioni dell'applicazione in cui è necessario rivedere il codice per qualsiasi breve caduta del codice che avrebbe potuto essere fatto in un modo migliore per facilitare le prestazioni più veloci.

Le revisioni del codice vengono solitamente eseguite in presenza di un team composto da più di 2 sviluppatori e un lead tecnologico in cui il leader tecnologico vuole garantire la qualità dell'applicazione e assicurarsi che gli standard del codice vengano seguiti per ridimensionare l'applicazione per futuri miglioramenti e aggiornamenti per diverse versioni future.

Ad esempio abbiamo molte piattaforme open source CMS ora e queste piattaforme rilasciano aggiornamenti di volta in volta per migliorare le funzionalità della piattaforma, immagina uno sviluppatore che usa una di queste piattaforme e non ha seguito gli standard del codice come hard coding nei file core , scrivendo il codice dell'applicazione nei file di modello e se questo codice va in produzione e in seguito quando il client vuole aggiornare la piattaforma alla nuova versione, non verrà mai aggiornato a meno che la codifica non venga eseguita secondo gli standard di codice per quella piattaforma. Qui diventa un problema serio per il rilascio del codice in produzione senza che venga eseguita la revisione del codice.

Quindi direi che le revisioni del codice fatte prima della pubblicazione sono un must per qualsiasi azienda di software professionale e le eccezioni possono essere solo per applicazioni personali / molto piccole dove lo sviluppatore è un programmatore molto esperto e porta esperienza con lui.

    
risposta data 05.11.2014 - 11:00
fonte
1

Le revisioni del codice hanno vantaggi che non provengono dal processo di revisione: c'è sempre un dilemma per ottenere un codice di alta qualità, ma creato in breve tempo. Senza recensioni di codice, sei da solo, quindi potresti sacrificare la qualità per eseguire il codice in breve tempo. Con le revisioni del codice, c'è questo revisore che non ti lascia scappare con la bassa qualità del codice - che è esattamente quello che vuoi, essendo costretti a trascorrere il tempo per ottenere un codice di qualità che è quello che volevi, e che sai finirà per risparmiare tempo perché ogni ora speso per scrivere codice migliore è di due ore salvate su debug (o più).

Senza le revisioni del codice, sei da solo, quindi spetta a te mantenere un'alta qualità del codice. Una soluzione semplice è quella di rivedere ogni cambiamento che fai da te e correggere cose che non sono all'altezza dei tuoi standard di qualità.

Questo evita anche situazioni orribili in cui le revisioni del codice portano a scontri di ego - la situazione in cui il programmatore A userebbe il metodo X, mentre B userebbe il metodo Y, quindi se A scrive il codice usa il metodo X, il recensore B insiste su metodo Y, quindi A riscrive il codice usando il metodo Y, mentre se B aveva scritto il codice e A lo ha recensito, sarebbe successo esattamente l'opposto.

    
risposta data 05.11.2014 - 18:40
fonte
0

Se sei un sostenitore delle revisioni del codice, temo che non ci sia un vero sostituto. Il caso sfortunato e stereotipato è un luogo di lavoro che non fa recensioni di codice perché (A) non hanno familiarità con la pratica e / o (B) non vogliono dedicare il tempo e gli sforzi per ottenere una revisione del codice sistema in atto.

Fondamentalmente, per ottenere ciò che vuoi qui, hai bisogno di un cambio di cultura sul posto di lavoro - e questo non è mai semplice o facile. Non dimenticare che anche se il tuo posto di lavoro è convinto al 100% che le recensioni del codice sono eccellenti e vogliono adottarle, il passaggio al nuovo modo di lavorare richiederà ancora un investimento significativo di tempo, energia e produttività. Questo investimento dovrebbe ripagarsi, ma è necessario avere un buy-in per l'investimento, non solo per il profitto. Guarda il video di Roy Osherove "Test unitario e TDD - Come realizzarlo" - le sfide di l'adozione delle recensioni del codice è molto simile a quella dell'adozione dei test unitari.

Nel frattempo, fai tutto il possibile per ottenere tutto ciò che puoi:

  • Se ci sono altri sviluppatori che vedono il valore delle recensioni del codice, prova rivedersi a vicenda, anche in modo informale.
  • Se hai un mentore o uno sviluppatore responsabile della tua formazione, spiegagli il valore che vedi nelle revisioni del codice e chiedi se sarebbero disposti a rivedere il tuo codice, almeno in occasione.
  • Dì al tuo manager che desideri rivedere il codice di altre persone, perché ti aiuterà a capire meglio il sistema.
  • Se a un certo punto diventi un lead della squadra, puoi installare revisioni di codice a livello locale, solo per il tuo team.

Un importante vantaggio di uno di questi è, se sei in grado di mantenerli nel tempo, quindi gli sviluppatori intorno a te inizieranno a notare le revisioni del codice. Dimostrerai efficacemente come le revisioni del codice possono essere integrate all'interno della cultura esistente e questo apre la strada affinché la cultura inizi a cambiare. Rivedi le recensioni del aiuto del codice, quindi se sei in grado di dimostrare che su piccola scala, questo aprirà la strada agli altri - e alla cultura nel suo insieme - per seguire il tuo esempio.

    
risposta data 12.11.2014 - 09:40
fonte
-2

Smetti di preoccupartene: il tuo nuovo datore di lavoro non si preoccupa solo delle revisioni del codice. Impara ad avere una certa fiducia nelle tue capacità senza che qualcun altro ti dica che è OK controllare il codice che hai scritto. Presto imparerai a vivere senza il processo noioso che sta rivedendo il codice degli altri.

Segui le linee guida di stile (o solo lo stile) che tutti usano. Usa la tua esperienza per decidere cosa deve commentare, quali convenzioni di denominazione usare e così via.

Quindi prova tutto prima di controllarlo. La cosa più importante è che funzioni correttamente.

    
risposta data 05.11.2014 - 15:33
fonte
-2

Se al tuo nuovo datore di lavoro non piace l'idea delle revisioni del codice, potrebbe essere perché hanno un'associazione negativa con le metodologie di tipo controllo e controllo vecchio stile e mirano a un insieme di pratiche di tipo più moderno e agile . In questo caso, potrebbero essere più aperti all'idea della programmazione in coppia, che offre molti degli stessi vantaggi, ed è ampiamente considerata come una pratica più dinamica e moderna.

    
risposta data 05.11.2014 - 15:51
fonte

Leggi altre domande sui tag