Je dirais qu'il serait très imprudent de décider arbitrairement à l'encontre de plusieurs points de sortie que j'ai trouvé la technique pour être utile dans la pratique , encore et encore, en fait, j'ai souvent refait code existant à de multiples points de sortie pour plus de clarté. Nous pouvons comparer les deux approches ainsi:-
string fooBar(string s, int? i) {
string ret = "";
if(!string.IsNullOrEmpty(s) && i != null) {
var res = someFunction(s, i);
bool passed = true;
foreach(var r in res) {
if(!r.Passed) {
passed = false;
break;
}
}
if(passed) {
// Rest of code...
}
}
return ret;
}
Comparez cela à l'endroit du code où de multiples points de sortie sont autorisés:-
string fooBar(string s, int? i) {
var ret = "";
if(string.IsNullOrEmpty(s) || i == null) return null;
var res = someFunction(s, i);
foreach(var r in res) {
if(!r.Passed) return null;
}
// Rest of code...
return ret;
}
Je pense que la dernière est beaucoup plus clair. Aussi loin que je peux dire à la critique de plusieurs points de sortie est plutôt archaïque du point de vue de ces jours.