DEV Community

Meghan (she/her)
Meghan (she/her)

Posted on

The Auto-breaking Switch Statement: A Proposal

I have taken advantage of fallthoughs in switch statements maybe twice. And that's a hard maybe. I can only really remember one instance where I did not break after every case block. For most of us, a switch statement will be mostly used as a super compact if...else statement like the following:

function getSeasonFromMonth(month) { let season = null; switch (month) { case December: case January: case February: { season = Winter; break; } case March: case April: case May: { season = Spring; break; } case June: case July: case August: { season = Summer; break; } case September: case October: case November: { season = Autumn; break; } } return season; } 
Enter fullscreen mode Exit fullscreen mode

While you would probably use return in this case, I'm not to get the point across. What if, if you put a break in front of the switch then it automatically breakd after every block? So you could rewrite the above as:

function getSeasonFromMonth(month) { let season = null; switch (month) { case 'December': case 'January': case 'February': { season = 'Winter'; } case 'March': case 'April': case 'May': { season = 'Spring'; } case 'June': case 'July': case 'August': { season = 'Summer'; } case 'September': case 'October': case 'November': { season = 'Autumn'; } } return season; } 
Enter fullscreen mode Exit fullscreen mode

Clean code doesn't repeat itself and I can only imagine the nightmares caused from the side-effects of a forgotten break.

~So give us a break TC39 and put this in!~

Top comments (1)

Collapse
 
nektro profile image
Meghan (she/her)

While I do realize this could be polyfill'd (since I have before) using functions for code blocks adds a bunch of unnecessary scopes and makes code optimization far harder.