Pratiche di scrittura del codice non specifiche. Per favore includi anche il ragionamento.
Il mio inizio:
- usa
GCC
oClang
- gcc perché non è contestabile nella quantità di controllo statico che può fare (sia rispetto agli standard che agli errori generali)
- clang perché ha messaggi di errore così carini e significativi
- durante la compilazione del codice C utilizzando GCC usa
-Wall -Wextra -Wwrite-strings -Werror
- nel 99,99% l'avviso è un errore valido
- durante la compilazione del codice C ++ usando GCC usa
-Wall -Wextra -Weffc++ -Werror
- potresti saltare
-Weffc++
(perché può creare confusione)
- potresti saltare
- codice sempre contro uno standard C (C89, C99), C ++ (C ++ 98, C ++ 0x)
- mentre i compilatori cambiano, gli standard no, la codifica rispetto a uno standard offre almeno un certo livello di sicurezza che il codice verrà compilato anche nella prossima versione del compilatore o anche in un altro compilatore / piattaforma
- assicurati che il compilatore verifichi il tuo codice rispetto allo standard (
-std=c99 -pedantic
per C99,-std=ansi -pedantic
per C ++ 98 in GCC)- causa sempre un controllo automatico
- usa
valgrind
o uno strumento simile per verificare gli errori di runtime (memoria, thread, ...)- bug catching gratuito
- non duplica mai la funzionalità delle librerie standard (se c'è un bug nel compilatore, crea una patch temporanea, un wrapper, ...)
- non c'è possibilità che il tuo codice sia migliore del codice gestito da centinaia di persone e testato per decine di migliaia
- assicurati di correggere tutti i bug segnalati dagli strumenti automatici (GCC, valgrind)
- gli errori potrebbero non causare l'arresto anomalo del tuo programma ora, ma saranno
- non seguire mai i consigli che includono "mai usare la caratteristica X"
- tali raccomandazioni sono solitamente superate, esagerate o eccessivamente semplificate