Diciamo che ho una funzione che calcola un output del sensore, tutti i valori sono > = 0, ma devo anche rilevare alcune situazioni di errore come "NO_POWER" che ho codificato con il valore "-65500". Sulla mia applicazione ci sono classi che si preoccupano solo del valore di output reale (indipendentemente dal fatto che sia presente un errore) e di altre classi che richiedono il valore reale e il codice di errore corretto. Quindi, in termini di design, mi è venuta l'idea di dover separare il concetto di "valore" e "codice di errore", ho trovato 2 opzioni:
Valore restituito e codice di errore nello stesso output (le classi client dovranno sapere come interpretare il valore di output):
double Sensor::compute() {
double output = compute();
return output;
}
o usare una struttura per recuperare l'output:
struct SensorOutput {
double value;
int error_code;
}
quindi il mio metodo potrebbe essere simile a:
SensorOutput Sensor::compute() {
double output = compute();
int errorCode = get_error_code();
SensorOutput out;
out.value = output;
out.error_code = errorCode;
}
Quale è meglio in termini di design?