Switch Statement – Should You Break on Default Case in Switch?

programming practicesswitch statement

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?
}

breaks 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 be default: it is perfectly legal, and sometimes even useful to put the default branch first); whether your code falls through the end of the switch statement or breaks 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 or break statement, for three reasons:

  1. Refactorability. If all your branches end with break or return, you can reorder them without changing the meaning. This makes it less likely for such a reordering to introduce a regression.
  2. Consistency, and Least Surprise. Consistency says your branches should end consistently, unless they are actually different in meaning. The Principle of Least Surprise dictates that similar things should look similar. Ending the last branch of a switch block exactly like the preceding ones fulfills both, which makes for easier reading and understanding. If you leave out the explicit break, 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.
  3. Protecting yourself. If you make a habit of ending all your switch branches with a break, 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 the break at the end of every branch also helps detecting missing break statements, which is great for debugging and troubleshooting.