Ehi, ho una domanda sullo stile di programmazione, perché nel mio codice corrente sto usando una funzione più grande che chiama alcune funzioni più piccole e tutte queste devono essere controllate con errori. Quindi qualcosa di simile:
void bigFunction() {
/* some computations */
if(smallFunction1() == -1) {
free(mem1);
free(mem2);
fclose(file);
unlink(filename);
return -1;
}
if(smallFunction2() == -1) {
free(mem1);
free(mem2);
fclose(file);
unlink(filename);
return -1;
}
if(smallFunction3() == -1) {
free(mem1);
free(mem2);
fclose(file);
unlink(filename);
return -1;
}
/* more computations and stuff in biggerFunction */
}
Penso che tu possa vedere chiaramente il mio problema: il codice dopo il fallimento di una di queste funzioni è sempre lo stesso, e ho voglia di ripetere questo codice ancora e ancora renderà il mio codice sempre più illeggibile.
Come affrontare questo problema? mi è venuto in mente Gotos, ma nei miei corsi di programmazione in università mi è stato detto di non usare mai il gotos (anche se ho dimenticato il motivo per cui ...)