Durante la scrittura di una funzione di libreria, come
double getAvg(double[]);
come si dovrebbe gestire l'array vuoto?
(Nota che, matematicamente parlando, la media di un set vuoto non è definita).
Qualunque cosa tu faccia, documentala. Se gli utenti non apprezzano il comportamento predefinito che fornisci, possono adattare la tua funzione alle loro esigenze.
Ecco un paio di possibilità, ordinate dal meglio al meno preferito (secondo me).
In questi casi non c'è un valore ragionevole, quindi dobbiamo restituire l' assenza di un valore. Questo potrebbe essere un double*
o double?
con un puntatore nullo o un tipo Maybe Double
o un oggetto Optional<double>
, a seconda della lingua. Queste tecniche hanno il vantaggio di eliminare l'assenza di un valore nel sistema di tipi, in modo da poter applicare all'utente la condizione di errore.
Si tratta di un errore logico, quindi è necessario generare un'eccezione o utilizzare qualsiasi meccanismo idiomatico nella propria lingua per specificare un errore. Per esempio. in Go, restituiresti più argomenti con uno che è un codice di errore, mentre potresti impostare errno
in C. Se gli utenti preferiscono avere un determinato valore predefinito, possono quindi rilevare l'eccezione.
I numeri in virgola mobile hanno un valore predefinito valido che potrebbe essere restituito in questi casi. Se agli utenti non piace il valore predefinito, possono verificare esplicitamente l'input che induce gli errori e fornire il proprio comportamento di errore.
0
, poiché questo è generalmente il valore predefinito per i numeri. Leggi altre domande sui tag error-handling libraries math