Stavo tentando di identificare un elemento dell'ingegneria del software che ritengo trascurato, non enfatizzato o non insegnato nel tipico corso di laurea per CS o SE. Quello che mi è venuto in mente è il concetto di programmazione difensiva. Mi piacerebbe sentire le opzioni della comunità sul programma difensivo e / o sulle tecniche specifiche che usi regolarmente. Inoltre, vorrei sapere se esistono tecniche specifiche per la lingua.
Modifica:
Solo per più chiaro. Non sto cercando una lezione sul programma difensivo. Capisco di cosa si tratta. Speravo che questo sarebbe stato più di discussione sui diversi metodi che i membri della comunità impiegano o trovano di valore. Ecco alcune tecniche che uso. Tieni presente che uso C quasi esclusivamente.
Standard di codifica. Inizialmente non si potrebbe pensare che questo abbia qualcosa a che fare con la programmazione difensiva, ma lo fa. Per illustrare, supponiamo che lo standard di codifica richieda di anteporre i nomi delle variabili al tipo di variabile come IntValue o UIntValue. La convenzione consente di individuare facilmente potenziali problemi delle regole di promozione come (IntX = IntValue * UIntValue)
Usa macro di preprocessore per le costanti. Personalmente, penso che questo renda il tuo programma più leggibile e mantenibile, ma fornisca anche una rete di sicurezza. Puoi essere sicuro che tutte le aree del codice che utilizzano la macro verranno aggiornate quando cambi il valore. Altri usi delle macro del preprocessore possono anche fornire attributi difensivi nel codice.
Alcune tecniche sono incorporate nel linguaggio come variabili statiche o dichiarazioni di funzioni o in incapsulamento di dati c ++.
Naturalmente ci sono quelli più ovvi tra cui la convalida di tutti i tuoi input e output.