Ответ 1
Короткий ответ: это не имеет значения.
Я использую фигурные скобки со всеми моими операциями case switch в C/ Objective-C/С++
У меня не было, пока несколько мгновений назад, вопрос о том, включал ли оператор break;
внутри фигурных скобок хорошую или плохую практику. Я подозреваю, что это не имеет значения, но я полагаю, что это все равно стоит спросить.
switch (foo) {
case 1: {
// stuff
break;
}
default: {
break;
}
}
против
switch (foo) {
case 1: {
// stuff
} break;
default: {
// stuff
} break;
}
Короткий ответ: это не имеет значения.
Просто дайте немного более подробный ответ...
В официальной спецификации C99 говорится следующее о инструкции break:
Оператор break прекращает выполнение самого маленького закрывающего переключателя или оператора итерации.
Так что это действительно неважно. Что касается меня, я сделал перерыв внутри фигурных скобок. Поскольку вы также можете иметь перерывы в других местах внутри ваших фигурных скобок, более логично также иметь окончательный разрыв внутри фигурных скобок. Вид вроде заявления о возврате.
Там тонны различных стилей кодирования, как объединить фигурные скобки и переключатели. Я буду использовать тот, который я предпочитаю в примерах. Оператор break
вырывается из самого внутреннего цикла или оператора switch независимо от местоположения. Например, вы можете иметь несколько разрывов для одного случая:
switch (foo) {
case 1:
{
if (bar)
break;
bar = 1;
...
}
break;
}
Обратите внимание, что вы также можете разместить случаи в любом месте, хотя это считается плохой практикой. Метка корпуса очень похожа на метку goto. Случилось так, что я написал что-то вроде этого:
switch (foo) {
case 1:
bar = 1;
if (0) {
case 2:
bar = 2;
}
...
break;
}
но используйте его с осторожностью.
Вы, вероятно, не хотите, чтобы завитки были в первую очередь, если они вам не нужны для лексического охвата. Первый пример выглядит лучше для меня, но я полагаю, что реальный ответ заключается в том, что это вопрос вкуса.
Как ясно сказано, это всего лишь вопрос личного стиля, но я всегда ставил выражение break вне фигурных скобок: перерыв перед закрывающей скобкой мне кажется выскочить из сложного заявления, слегка увеличивая чувство кода спагетти.