There is one case I can think of where you want a default clause that does not throw an error - handling keycodes:
switch (keyboardEvent.keyCode) {
case KeyCode.LEFT:
return goLeft();
case KeyCode.RIGHT:
return goRight();
case KeyCode.Up:
return goUp();
case KeyCode.DOWN:
return goDown();
default:
return doNothing();
}
(in no particular language)
Adding ~100 more case clauses for all the other key codes is too much, and you wouldn't want this to fail compilation just because someone updated KeyCodes to support some more keys.
But yea, I think exhaustively checking every case in the KeyCode enum would be a waste of time and would be way too verbose. I gotta be honest, I wasn’t expecting someone to come up with something that made me think it was wise to avoid the never assertion, but you did. :) I guess that’s he beautify of seeking feedback.
There is one case I can think of where you want a
default
clause that does not throw an error - handling keycodes:(in no particular language)
Adding ~100 more
case
clauses for all the other key codes is too much, and you wouldn't want this to fail compilation just because someone updatedKeyCodes
to support some more keys.Whadya know, an exception to the rule. Bravo! 👏
But yea, I think exhaustively checking every case in the KeyCode enum would be a waste of time and would be way too verbose. I gotta be honest, I wasn’t expecting someone to come up with something that made me think it was wise to avoid the never assertion, but you did. :) I guess that’s he beautify of seeking feedback.
That's why my best practice is to never blindly follow best practices to the letter and always apply your own judgment.