Stavo guardando un codice che ho ereditato e non ho potuto decidere se mi piace un po 'di codice.Un metodo di connessione può restituire un valore?
In sostanza, v'è un metodo che è simile al seguente:
bool Connect(connection parameters){...}
Restituisce vero se si collega con successo, falso altrimenti.
Ho scritto codice simile in passato, ma ora, quando vedo questo metodo, non mi piace per una serie di motivi.
È un codice facile da scrivere che ignora il valore restituito o non si rende conto che restituisce un valore.
Non è possibile restituire un messaggio di errore.
Controllo del ritorno del metodo in realtà non un aspetto gradevole:
se {....}
ho potuto riscrivere il codice per (Connect (...)!) lanciare un'eccezione quando non si connette correttamente, ma non considero questa una situazione eccezionale. Invece sto pensando di refactoring del codice come segue:
void Connect(Connection Parameters, out bool successful, out string errorMessage){...}
Mi piace che altri sviluppatori sono tenuti a fornire le stringhe di successo e di errore in modo da conoscere il metodo ha le condizioni di errore e posso sapere restituire un messaggio
Qualcuno ha qualche idea in merito?
Grazie -Matt
Mi piace questo approccio. Certamente rende le cose chiare. Penso che combinare il metodo TryConnect (...) con il suggerimento di Foovanadil su un tipo di reso personalizzato sia ciò che sto per fare. –
Se la tua connessione è di breve durata potresti anche considerare la restituzione IDisposable per consentire una facile pulizia della connessione in questo modo: usando (var connection = connect (...)) { // usa la connessione } –