Expressions and statements
ES.78
Не полагайтесь на неявный проваливание в операторах `switch`
Причина
Всегда завершайте непустую ветку case оператором break. Случайное отсутствие break — распространённая ошибка. Намеренное проваливание может стать источником проблем при сопровождении кода и должно быть редким и явным.
Пример
switch (eventType) {
case Information:
update_status_bar();
break;
case Warning:
write_event_log();
// Плохо — неявное проваливание
case Error:
display_error_window();
break;
}
Несколько меток case для одного оператора допустимы:
switch (x) {
case 'a':
case 'b':
case 'f':
do_something(x);
break;
}
Операторы return в ветке case также допустимы:
switch (x) {
case 'a':
return 1;
case 'b':
return 2;
case 'c':
return 3;
}
Исключения
В редких случаях, когда проваливание признано уместным, используйте явную аннотацию [[fallthrough]]:
switch (eventType) {
case Information:
update_status_bar();
break;
case Warning:
write_event_log();
[[fallthrough]];
case Error:
display_error_window();
break;
}
Примечание
Контроль
Отмечать все неявные проваливания из непустых веток case.