I am a bit puzzled on whenever or not to include break
after the last case, often default
.
switch (type) {
case 'product':
// Do behavior
break;
default:
// Do default behavior
break; // Is it considered to be needed?
}
break
s sole purpose is in my understanding to stop the code from running through the rest of the switch
-case.
Is it then considered more logical to have a break
last due to consistency or skip having it due to the break
applying no functional use whatsoever? Both are logical in different ways in my opinion.
This could to a certain degree be compared with ending a .php
file with ?>
. I never end with ?>
mostly due to the risk of outputting blank spaces, but one could argue that it would be the logical thing to end the file with.
Best Answer
break
isn't technically needed after the last alternative (which, mind you, doesn't have to bedefault
: it is perfectly legal, and sometimes even useful to put thedefault
branch first); whether your code falls through the end of theswitch
statement orbreaks
out at the end of its last branch has the same result.However, I'd still end every branch, including the last one, with a
return
orbreak
statement, for three reasons:break
orreturn
, you can reorder them without changing the meaning. This makes it less likely for such a reordering to introduce a regression.switch
block exactly like the preceding ones fulfills both, which makes for easier reading and understanding. If you leave out the explicitbreak
, the last branch will be optically different (which is especially important for quick scanning), and in order to see that it's really not different, the reader has to descend to the nitty-gritty level of reading individual statements.switch
branches with abreak
, it will become automatic after a while, and you'll be less likely to accidentally forget it where it does matter. Training yourself to expect thebreak
at the end of every branch also helps detecting missingbreak
statements, which is great for debugging and troubleshooting.