Рассмотрим следующие два фрагмента с фигурными скобками:
switch (var) {
case FOO: {
x = x + 1;
break;
}
case BAR: {
y = y + 1;
break;
}
}
Без подтяжек:
switch (var) {
case FOO:
x = x + 1;
break;
case BAR:
y = y + 1;
break;
}
Я знаю, что во фрагменте с фигурными скобками создается новая область действия, заключающая каждый регистр в фигурные скобки. Однако, если в каждом случае не требуется новая область видимости (т. Е. Имена переменных не используются повторно), существует ли какое-либо снижение производительности за использование фигурных скобок с регистром?
источник
Как мы знаем, скобки для корпусов переключателей не нужны. Использование скобок может привести к путанице в отношении объема случая.
Открывающая скобка обычно связана с чем-то значимым, например, с началом функции или началом цикла, или началом объявления класса, или началом инициализации массива и т. Д. Мы знаем, что кейс выходит из блока переключателя, когда он встречает разрыв заявление. Таким образом, использование фигурных скобок, кажется, подразумевает идею о другом поле для случая для невежественного читателя. Так что лучше избегать фигурных скобок ради лучшей читабельности программирования.
т.е. когда у меня есть что-то вроде,
switch(i) { case 1 : { //do something } System.out.println("Hello from 1"); case 2: .... }
"Привет от 1" печатается. Но использование фигурных скобок может подсказать несведущему читателю, что регистр заканчивается на '}', уже зная, что обычно означают фигурные скобки в случае циклов, методов и т. Д.
Как и у нас есть операторы перехода к метке в 'C', элемент управления просто переключается на регистр и продолжает выполнение. Итак, с таким пониманием использование фигурных скобок при написании падежей для переключателя - это просто ПЛОХАЯ практика.
С технической точки зрения вы можете окружить любой блок вашего кода дополнительной парой фигурных скобок при использовании с допустимым синтаксисом. Использование скобок в переключателе выглядит так плохо, по крайней мере, для меня, потому что это дает другое ощущение, как я сказал выше.
Мое предложение: просто избегайте использования скобок для переключателей.
источник
С подтяжками.
Есть так много вещей, которые могут пойти не так с операторами switch, я стараюсь избегать их там, где могу, т.е.
Использование фигурных скобок - один из способов предотвратить как намеренное, так и случайное совместное использование переменных между операторами case.
источник
...case 1: int a = 10; break; case 2: int a = 11; break; ...
не компилируется. (протестировано с Oracle JDK 8)Этот вопрос, вероятно, будет закрыт как «аргументированный» (BRACE WAR!), Но какого черта? Мне действительно нравятся подтяжки после футляров. На мой взгляд, уродливый синтаксис переключателя больше похож на остальные языковые конструкции. (В этом "случае" за использование фигурных скобок нет штрафа)
источник
Вы говорите, что фигурные скобки можно опустить, потому что имена переменных не используются повторно. Я предполагаю, что под повторным использованием имен переменных вы имеете в виду объявление новой переменной того же типа.
Фигурные скобки на самом деле наиболее полезны, чтобы избежать повторного использования одной и той же переменной в разных
case
s по ошибке. Сегодня они не объявляют никаких переменных, но кто-то добавит их завтра, и без фигурных скобок код подвержен ошибкам.источник
Я бы не стал использовать скобки для корпусов переключателей.
Оператор switch уже без фигурных скобок выглядит достаточно причудливо.
Корпуса переключателей должны быть очень короткими. Когда вам нужно объявить переменные, это признак того, что вы делаете это неправильно.
Теперь перейдем к поддержке устаревшего кода C, который поддерживает переключатели из 500+ строк ...
источник
Я никогда не думал об этом раньше. Никогда не нуждались в фигурных скобках в предложении о случае, поэтому не понимаю, зачем они вам. Лично я не придерживаюсь идеи «Так будет легче поддерживать», это просто чушь, будет легче поддерживать, если код имеет смысл и задокументирован.
Без фигурных скобок ... меньше синтаксиса - больше
источник