Этот вопрос в основном указывается на C/С++, но я думаю, что другие языки также актуальны.
Я не могу понять, почему используется параметр switch/case вместо if/else if. Мне очень нравится использование goto's и приводит к тому же виду беспорядочного кода, в то время как те же результаты могут быть достигнуты с if/else, если более организованным образом.
Тем не менее, я вижу эти блоки довольно часто. Общепринятое место для их нахождения находится рядом с контуром сообщений (WndProc...), тогда как они относятся к местам, когда они поднимают самый тяжелый хаос: переменные разделяются по всему блоку, даже если они не являются подходящими (и не могут быть инициализируется внутри него). Дополнительное внимание нужно уделять не прекращению перерыва, и так далее...
Лично я не использую их, и мне интересно, что я чего-то не хватает?
Являются ли они более эффективными, чем if/else? Продолжают ли они традиции?