Порядок не имеет значения, если вы включили свои break
с.
В качестве отступления, я бы хотел поставить break
сразу перед каждые case
или default
.Гораздо проще проверить, что это правило соблюдается, чем пытаться заглянуть в конец каждого оператора case.
switch (Close) {
break; default:
break; case tok::r_paren : LHSName = "("; DID = diag::err_expected_rparen;
break; case tok::r_brace : LHSName = "{"; DID = diag::err_expected_rbrace;
break; case tok::r_square: LHSName = "["; DID = diag::err_expected_rsquare;
break; case tok::greater: LHSName = "<"; DID = diag::err_expected_greater;
break; case tok::greatergreatergreater: LHSName = "<<<"; DID = diag::err_expected_ggg;
}
Возможно, вам будет проще понять, если вы интерпретируете break
как «Не проваливайте в этот случай из любого другого случая». вместо «Не проваливайте из этого случая в любой последующий случай.«
В этом макете очень легко увидеть, отсутствует ли break
, и, следовательно, вынуждая писателя (и читателя) спросить себя« хочу ли ячерез здесь?Все break
хорошо выстраиваются в линию, и это очень очевидно, если кто-то отсутствует.
Уточнение: в моем ответе нет «волшебства».Я просто размещаю свой пробел таким образом, чтобы он был намного более читабельным для меня.И пробелы не имеют значения, поэтому я могу это сделать.break
в самом конце switch
является избыточным.Если отсутствует, компилятору не разрешается переходить к вершине switch
, как если бы это был какой-то цикл while
.Точно так же избыточный break
в самом начале switch
ничего не меняет и должен быть принят (и проигнорирован) компилятором.