Io lavoro in C#, quindi ho postato questo sotto C# anche se questa potrebbe essere una domanda a cui è possibile rispondere in qualsiasi linguaggio di programmazione.Metodi che restituiscono valori di ritorno significativi
A volte creerò un metodo che eseguirà qualcosa come registrare un utente in un sito Web. Spesso restituisco un booleano dal metodo, ma questo spesso causa problemi perché un valore di ritorno booleano non trasmette alcun contesto. Se si verifica un errore durante la registrazione dell'utente, non ho modo di sapere cosa ha causato l'errore.
Ecco un esempio di un metodo che attualmente utilizzo, ma vorrebbe cambiare in modo che restituisca più di 0 o 1.
public bool LoginToTwitter(String username, String password)
{
// Some code to log the user in
}
Il metodo di cui sopra non può che restituire true o false. Questo funziona bene perché posso solo chiamare il seguente:.
if(http.LoginToTwitter(username, password))
{
// Logged in
} else {
// Not Logged in
}
Ma il problema è che non ho modo di sapere il motivo per cui l'utente non è stato registrato in una serie di motivi potrebbe esistere come ad esempio: sbagliato username/password combinazione, account sospeso, account richiede l'attenzione degli utenti ecc. Ma usando il seguente metodo e la logica, non è possibile saperlo.
Quali approcci alternativi ho?
Cosa succede quando si verifica una nuova condizione di errore. @ Dan? – xhamr
@jvra Se ci sono eccezioni impreviste, credo che dovrebbero essere ridisegnate come indicano alcune delle altre risposte. Tuttavia, il codice dovrebbe essere in grado di gestire tutti i casi previsti: nome utente errato, password errata, sospensione dell'account, ecc. E restituire i casi previsti nell'enumerazione per l'applicazione da gestire. –
Ma il fatto è che quando si vuole gestire altro errore enum. il tuo codice potrebbe crescere man mano che aumenti le tue costanti enum. ma è accettabile se sai che in futuro non potresti avere più enum di costanti. – xhamr