Ci sono due problemi notevoli nella domanda, la parte con tatto e la parte in scadenza . Si tratta di problemi distinti: il primo è una questione di comunicazione e dinamiche di gruppo, il secondo è una questione di pianificazione e definizione delle priorità.
Con molto tatto . Presumo che tu voglia evitare l'ego spazzolato e il pushback negativo contro le recensioni. Alcuni suggerimenti:
- Avere una comprensione condivisa su standard di codifica e principi di progettazione.
- Non criticare o recensire mai lo sviluppatore , solo il codice . Evita la parola "tu" o "il tuo codice", parla solo del codice in esame, disconnesso da qualsiasi sviluppatore.
- Metti il tuo orgoglio nella qualità del codice completato , in modo tale che i commenti di revisione che aiutano a migliorare il risultato finale siano apprezzati.
-
Suggerisci miglioramenti piuttosto che la domanda. Parla sempre se non sei d'accordo. Cerca di capire l'altro punto di vista quando non sei d'accordo.
- Le recensioni vanno in entrambe le direzioni. Cioè chiedi alla persona che hai recensito di rivedere il tuo codice. Non avere recensioni "a senso unico".
La seconda parte è la definizione delle priorità . Hai molti suggerimenti per miglioramenti, ma da quando si avvicina la scadenza c'è solo il tempo di applicarne alcuni.
Bene, in primo luogo vuoi evitare che ciò accada in primo luogo! Lo fai eseguendo revisioni continue e incrementali. Non lasciare che uno sviluppatore lavori per settimane su una funzione e poi riesamini tutto all'ultimo momento. In secondo luogo, le revisioni del codice e il tempo necessario per implementare i suggerimenti di revisione dovrebbero far parte della pianificazione e delle stime regolari per qualsiasi attività. Se non c'è abbastanza tempo per rivedere correttamente, qualcosa è andato storto nella pianificazione.
Ma ipotizziamo che qualcosa sia andato storto nel processo, e ora ti trovi di fronte a una serie di commenti di revisione, e non hai il tempo di implementarli tutti. Devi dare la priorità. Poi vai per le modifiche che saranno più difficili e più rischiose da modificare in seguito se la rimandi.
La denominazione di identificatori nel codice sorgente è incredibilmente importante per la leggibilità e la gestibilità, ma è anche piuttosto facile e a basso rischio di cambiare in futuro. Lo stesso con la formattazione del codice. Quindi non concentrarti su quella roba. D'altra parte, la sanità mentale delle interfacce esposte pubblicamente dovrebbe essere la massima priorità, dal momento che sono davvero difficili da cambiare in futuro. I dati persistenti sono difficili da cambiare: se in un primo momento si inizia a memorizzare dati inconsistenti o incompleti in un database, è molto difficile correggerli in futuro.
Le aree coperte dai test unitari sono a basso rischio. Puoi sempre sistemarli più tardi. Le aree che non lo sono, ma che potrebbero essere unità testate sono a rischio inferiore rispetto alle aree che non possono essere sottoposte a test dell'unità.
Supponiamo che tu abbia una grossa porzione di codice senza test unitari e tutti i tipi di problemi di qualità del codice, inclusa una dipendenza hardcoded su un servizio esterno. Invece, iniettando questa dipendenza, si rende il chunk testabile del codice. Ciò significa che in futuro potrai aggiungere test e quindi lavorare per risolvere il resto dei problemi. Con la dipendenza hardcoded non puoi nemmeno aggiungere test. Quindi, prima cerca questa soluzione.
Ma per favore cerca di evitare di finire in questo scenario in primo luogo!