Sto scrivendo una libreria di analisi CSV in C e sto considerando se esprimere i codici di errore come valori di ritorno o come parametri passati per riferimento.
Ad esempio, qui ci sono le firme per la funzione che conta il numero di colonne in un file CSV, usando entrambi i disegni:
// Method one
// Return value: number of columns
size_t countfields(
unsigned char *data, // First/header row in the file
size_t len, // Length of the buffer
errno_t *err // Error code (0 == success)
);
// Method two
// Return value: error code (0 == success)
errno_t countfields(
unsigned char *data, // First/header row in the file
size_t len, // Length of the data buffer
size_t *numfields // Number of columns
);
Ovviamente, questa decisione si applica solo a linguaggi come C che non supportano eccezioni, quindi l'unico modo per verificare un errore è esaminare le variabili di mantenimento degli errori designate dopo una chiamata di funzione.
Quale metodo dovrei usare: restituire il codice di errore, o usare un parametro, e perché?