mayton2019, не вспомню так сходу, зачем мне это понадобилось в последний раз.
Но сама ситуация, когда зрительно область видимости одна, а реально - другая, создает совершенно ненужное поле для возможных ошибок. Добавьте к этому, что код, который этого потребовал, явно не из пары строчек... и лучше подстелить соломку в виде фигурных скобочек.
Adamos, я думаю что вы решаете несуществующие проблемы. Я готов признать полезность операции scope в том случае когда код генерируется кодо-генераций (парсеры, конечные автоматы) но заставлять человека-разработчика ставить лишнюю пару скобок просто так на всякий случай я-бы не стал. А игры с областью видимости
for(int i = 0;i < 10; i++) {{
for(int i = 0;i < 10; i++) printf("%d",i);
}}
порождают странные сниппеты кода, которые хотя и проходят компилляцию тем не менее вызывают WTF во время коде-ревью.
Adamos, я думаю если эту идею развивать глубоко, то окажется что и такой вложенный цикл тоже не нужен. Внутри switch нужна инициализация итератора или некого sequence-выражения которое бежит вперед или назад. Моё мышление уже слегка деформировано Scala и Haskell и я везде вижу функции. И switch для меня - уже функция а не оператор. Нет конешно в работе всяко бывает. Но я-бы всегда шел по пути выбрасывания дубликации кода. И если его выбросить по максимуму то внезапно окажется что даже фигурные скобочки не нужны. Все станет очень просто.
mayton2019, мне надо было привести остальные пять case, в которых ничего подобного нет? Вы придираетесь к примеру, которым я иллюстрирую озвученную проблему. Switch ничем особенным от прочего кода не отличается, кроме вот такой вот засады по иллюзорности областей видимости. Скобки ее устраняют, совсем недорого и по написанию, и по прочтению.
Adamos, бох с вами. Мне ваши кейсы не нужны. Я просто говорю о своём опыте рефакторинга. Не пригодились мне фигурные скобочки аж никогда. Или просто везло мне. Или мы сложность выносили в методы и функции.