Instead of having a single exit point I prefer to use guard clauses in most of the functions I write, using the single exit point paradigm only when dealing with resources that have to be manually closed (having a single exit point makes resource handling easier and less prone to error if you don't have something like a finally block to help you).
As a matter of fact, I prefer to use what I call "return early" paradigm, that is, return as soon as the job is done (guard clauses are a specific case of this). That avoids nested conditionals and makes the code simpler and easier to read.
Example
Using nested conditional to have a single exit point:
String ret = null;
if (isGreen && isRound && smellsCitric){
ret = getLime();
} else {
if (isGreen && isRound){
ret = getGreenBall();
} else {
if (isGreen && smellsCitric){
ret = getCitricSoap();
} else {
if (isRound && smellsCitric){
ret = getOrange();
} else {
if (isGreen){
ret = getGreenColor();
} else {
ret = getUnknown();
}
}
}
}
}
return ret;
Using the return early paradigm:
if (isGreen && isRound && smellsCitric){
return getLime();
}
if (isGreen && isRound){
return getGreenBall();
}
if (isGreen && smellsCitric){
return getCitricSoap();
}
if (isRound && smellsCitric){
return getOrange();
}
if (isGreen){
return getGreenColor();
}
return getUnknown();
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.