Vedo il seguente schema di codice dappertutto nel codebase della mia azienda (applicazione .NET 3.5):
bool Foo(int barID, out Baz bazObject) {
try {
// do stuff
bazObject = someResponseObject;
return true;
}
catch (Exception ex) {
// log error
return false;
}
}
// calling code
BazObject baz = new BazObject();
fooObject.Foo(barID, out baz);
if (baz != null) {
// do stuff with baz
}
Sto cercando di capire perché si dovrebbe fare questo invece di avere il metodo Foo
semplicemente prendere l'ID e restituire un oggetto Baz
, invece di restituire un valore che non è utilizzato e che ha il l'oggetto reale è un parametro ref o output.
C'è qualche vantaggio nascosto di questo stile di codifica che mi manca?