Le funzioni dovrebbero sempre restituire lo stato di successo / fallimento? [duplicare]

5

Qual è il ragionamento alla base del fatto che tutte le funzioni (e metodi!) restituiscono un tipo uniforme, di solito int, come stato?

Per me è strano; specialmente quando chiami un getter e restituisce uno stato (che di solito è sempre lo stesso) e imposta uno dei parametri sul valore che ottieni.

    
posta Plumenator 06.08.2011 - 11:38
fonte

2 risposte

3

Se non ci sono possibilità di fallimento non ha senso restituire uno stato. Ciò ha senso solo se il codice che utilizza la funzione effettivamente valuta il codice di stato restituito e risponde ad esso con qualche messaggio di errore o in qualche modo per correggere un errore. Troppi codici di stato inutili e programmatori che lo usano formeranno l'abitudine di ignorarli.

Anche se a seconda delle funzionalità effettive potrebbe essere importante mantenere tale opzione per le modifiche che potresti voler apportare in una versione futura di alcune librerie. (Ma poi dovresti sapere cosa stai facendo)

Può essere messo in discussione se l'approccio del codice di stato è comunque una buona idea. Preferisco le eccezioni per la gestione degli errori, poiché rendono il codice più leggibile.

In alcune lingue (e in molti casi d'uso) è necessario il valore di ritorno per altri scopi. O semplicemente restituire il risultato di una funzione o restituire qualcosa come this come fai quando sovraccarichi determinati operatori in C ++. Quindi renderlo un principio per restituire uno stato non funzionerà comunque.

    
risposta data 06.08.2011 - 11:59
fonte
2

Di solito scrivono quel tipo di interfaccia per ragioni di compatibilità binaria, in cui non puoi semplicemente lanciare un'eccezione e devi lasciarti spazio per aumentare la gamma di errori.

    
risposta data 06.08.2011 - 11:45
fonte

Leggi altre domande sui tag