Ultimamente ho avuto difficoltà a capire quale sia la giusta quantità di controllo e quali siano i metodi corretti.
Ho alcune domande al riguardo:
Qual è il modo corretto di verificare la presenza di errori (input errato, stati errati, ecc.)? È meglio verificare esplicitamente la presenza di errori o utilizzare funzioni come assert che possono essere ottimizzate dal codice finale? Ho la sensazione di controllare esplicitamente un programma con un sacco di codice extra che non dovrebbe essere eseguito nella maggior parte delle situazioni, e per non parlare della maggior parte degli errori che finiscono con un fallimento di interruzione / uscita. Perché ingombrare una funzione con controlli espliciti solo per interrompere? Ho cercato affermazioni contro il controllo esplicito degli errori e ho trovato poco per spiegare veramente quando fare entrambe le cose.
La maggior parte dice "usa assert per verificare la presenza di errori logici e usa controlli espliciti per verificare altri errori". Questo non sembra portarci molto lontano però. Diremmo che questo è fattibile:
Malloc returning null, check explictly
API user inserting odd input for functions, use asserts
Questo mi renderebbe migliore nel controllo degli errori? Cos'altro posso fare? Voglio davvero migliorare e scrivere codice "professionale" migliore.
setjmp
/ longjmp
sono disponibili in C, quindi non hai bisogno di una nuova lingua.