"Standard" di codifica ... Ci sono molte aree di sviluppo che possono essere standardizzate. Stiamo parlando di convenzioni di codifica, come standard di denominazione ecc.? O stiamo parlando di qualcosa di più profondo, come TDD / BDD, CI, ecc?
Posso dirti che l'adesione a una metodologia "test-first", con CI che impone il superamento di test e una buona copertura del codice, riduce il numero di bug rilevati dal client. I test automatizzati, sia da parte dello sviluppatore che del QA, sono anche un modo relativamente "economico" di trovare bug perché generalmente hanno tempi di feedback molto brevi. Puoi sapere che non hai scritto ciò che pensavi di aver eseguito eseguendo test di unità per circa 45 secondi. Un paio d'ore di test di integrazione troveranno luoghi in cui collegare le cose non è andato come previsto, e i test UI end-to-end e automatizzati possono individuare rapidamente guasti funzionali nel software a livelli molto alti.
Inoltre impediscono la regressione. Hai trovato un bug. Scrivete un test che dimostrerà che il comportamento non si verifica più, codificate fino al superamento del test e ora avete un test che da questo punto in poi garantirà che il bug non sarà mai più un problema. Questa è, secondo la mia esperienza, una delle principali fonti di nuovi bug; risolvere una cosa interrompe qualcos'altro e il test da parte dello sviluppatore della correzione potrebbe non coprire quell'altra situazione che ora è rotta. Rompere cose che una volta funzionavano è una GRANDE bandiera rossa per i tuoi clienti.
Infine, questa struttura di test automatizzata che costruisci come parte di questa metodologia ti darà molto facilmente un ambiente in cui puoi rilasciare una nuova build del software con un preavviso letterale di un momento. "Ehi, quel bug che hai appena risolto ha causato dei veri mal di testa; quando lo avrai pronto in una nuova versione?" fai clic su "Oh, in circa 5 minuti quando il server di compilazione termina la pubblicazione nella pagina di download".
Per quanto riguarda le convenzioni di base sulla codifica, come la standardizzazione dei nomi delle variabili, ecc., Ho riscontrato che la maggior parte di esse è meno utile e più irritante. Questi sono i tipi di standard che sono "meravigliosi, perché ce ne sono così tanti tra cui scegliere". Ciò che percepisci come la differenza tra un identificatore PascalCased e CamelCased potrebbe non essere quello che qualcun altro pensa. Sottolineature principali, limiti di lunghezza dei nomi (o requisiti che i nomi di metodo / campo raccontano una storia); a parte le convenzioni applicate dal compilatore o che sono comunemente visualizzate nel codice della libreria specifico della lingua, il moderno IDE può dirti tutto ciò che devi sapere su una variabile o funzione, incluso se dovresti o non dovresti provare a usarlo in un particolare circostanza. Inoltre, l'esecuzione di un controllo della convenzione del codice restituisce spesso problemi con il codice che non è possibile o non si ' non voglio cambiare, come una libreria di terze parti che utilizzava un diverso set di standard o codice di interoperabilità che potrebbe essere conforme agli standard di denominazione API Win anziché agli standard della tua lingua madre. Si finisce per aggiungere cruft al proprio codice per indicare al proprio strumento di ignorare la cruft nel proprio codice.