Penso che in realtà ci siano due cose da affrontare, e in effetti le prenderei in considerazione separatamente perché non possono essere affrontate nello stesso modo, anche se le trovo entrambe importanti.
- L'aspetto tecnico: che mira ad evitare il codice rischioso o mal formato (anche se accettato dal compilatore / interprete)
- L'aspetto della presentazione: che si preoccupa di rendere chiaro il programma ai lettori
L'aspetto tecnico che mi qualifica di Coding Standard , così come Herb Sutter e Andrei Alexandrescu con i loro Standard di codifica C ++ . La presentazione mi qualifica di Coding Style , che include convenzione di denominazione, rientro, ecc ...
Standard di codifica
Poiché è puramente tecnico, uno standard di codifica può essere principalmente obiettivo. Pertanto ogni regola dovrebbe essere supportata da un motivo. Nel libro che ho indicato ogni articolo ha:
- Un titolo, semplice e preciso
- Un riassunto, che spiega il titolo
- Una discussione, che illustra il problema del fare diversamente e quindi afferma la logica
- opzionale Alcuni esempi, perché un buon esempio vale più di mille parole
- opzionale Un elenco di eccezioni per le quali non è possibile applicare questa regola, a volte con soluzioni alternative
- Un elenco di riferimenti (altri libri, siti Web) che hanno discusso di questo punto
La logica e le eccezioni sono molto importanti, in quanto riassumono il perché e il quando.
Il titolo deve essere abbastanza esplicito che durante le revisioni è sufficiente disporre di un elenco di titoli (cheat sheet) con cui lavorare. E ovviamente, raggruppa gli articoli per categoria per rendere più facile cercarne uno.
Sutter e Alexandrescu sono riusciti ad avere un elenco di solo un centinaio di voci, anche se C ++ è considerato peloso;)
Stile di codifica
Questa parte è generalmente meno obiettiva (e può essere decisamente soggettiva). L'intento qui è di garantire la coerenza, perché questo aiuta manutentori e nuovi arrivati.
Non vuoi entrare in una guerra santa su quale rientro o stile di parentesi è meglio qui, ci sono forum per questo: quindi in questa categoria fai le cose per consenso> voto di maggioranza> decisione arbitraria per leader.
Per un esempio di formattazione, vedere l'elenco delle opzioni di Stile artistico . Idealmente, le regole dovrebbero essere abbastanza chiare e complete da consentire a un programma di riscrivere il codice (anche se è improbabile che tu lo codifichi mai;))
Per la convenzione di denominazione, proverei a distinguere facilmente classe / tipi da variabili / attributi.
È anche in questa categoria che classifico le "misure" come:
- preferire metodi brevi o lunghi: di solito è difficile concordare quanto sia lungo
- preferisce il ritorno anticipato / continua / interrompi per ridurre il rientro
Varie?
E come ultima parola, c'è un elemento che raramente, se mai, viene discusso negli standard di codifica, forse perché è particolare per ogni applicazione: l'organizzazione del codice. Il problema architettonico è forse il problema più rilevante, rovina il progetto iniziale e ne rimarrai afflitto da anni. Dovresti forse aggiungere una sezione per la gestione dei file di base: intestazioni pubbliche / private, gestione delle dipendenze, separazione delle preoccupazioni, interfaccia con altri sistemi o librerie ...
Ma quelli non sono nulla se non sono effettivamente applicati e applicati .
Qualsiasi violazione dovrebbe essere sollevata durante le revisioni del codice e nessuna revisione del codice dovrebbe andare bene se una violazione è in sospeso:
- correggere il codice in modo che corrisponda alla regola
- correggi la regola in modo che il codice non risalti più
Ovviamente, cambiare una regola significa ottenere il "via libera" dai leader.