Se esiste un metodo
bool DoStuff() {
try {
// doing stuff...
return true;
}
catch (SomeSpecificException ex) {
return false;
}
}
dovrebbe invece essere chiamato IsStuffDone()
?
Entrambi i nomi potrebbero essere interpretati erroneamente dall'utente:
Se il nome è DoStuff()
perché restituisce un valore booleano?
Se il nome è IsStuffDone()
, non è chiaro se il metodo esegue un'attività o ne controlla solo il risultato.
Esiste una convenzione per questo caso? O un approccio alternativo, visto che questo è considerato difettoso? Ad esempio, in linguaggi con parametri di output, come C #, una variabile di stato booleana può essere passata al metodo come uno e il tipo di ritorno del metodo sarà void
.
EDIT: nel mio particolare problema, la gestione delle eccezioni non può essere delegata direttamente al chiamante, perché il metodo è una parte di un'implementazione dell'interfaccia. Pertanto, al chiamante non può essere addebitato il trattamento di tutte le eccezioni di diverse implementazioni. Non ha familiarità con quelle eccezioni. Tuttavia, il chiamante può gestire un'eccezione personalizzata come StuffHasNotBeenDoneForSomeReasonException
come suggerito nella risposta e commento di npinti .