The requirement for a final case default clause is defensive programming. The clause should either take appropriate action, or contain
a suitable comment as to why no action is taken. Even when the switch covers all current values of an enum, a default case
should still be used because there is no guarantee that the enum won’t be extended.
Noncompliant code example
switch ($param) {  //missing default clause
  case 0:
    do_something();
    break;
  case 1:
    do_something_else();
    break;
}
Compliant solution
switch ($param) {
  case 0:
    do_something();
    break;
  case 1:
    do_something_else();
    break;
  default:
    error();
    break;
}