Здравствуйте, Sheridan, Вы писали:
S>>>Аргументы?
ARK>>Точно такие же скачки сквозь разные ветки управления. Сишный оператор switch не является оператором структурного программирования.
S>Нет. При отсутствии break он будет выполняться строго сверху вниз, начиная от сработавшего case.
Строго вниз, строго вверх, нестрого назад — не имеет значения. Это разные ветки управления.
ARK>>Чтобы "код выполнялся не полностью", существуют функции.
S>Ну да, вместо читаемого кода плодить кучу функций и оборачивать всё if'ами. Годный подход, ага.
Какую кучу функций?

Функций должно быть столько, сколько надо.
Вместо вашего монстра код должен быть таким:
void DoFullWork()
{
checkLastWork();
clearTemp();
DoOptimizedWork();
}
void DoOptimizedWork()
{
ClearCaches();
DoWork();
}
void DoWork()
{
...
}
S>switch в данном случае не при чём. Надо быть просто внимательным.
Абсолютно все языковые конструкции — это об удобстве и внимательности. Некоторые удобны, некоторые нет. А некоторые просто уродливы, как сишный switch.
ARK>>>>Вообще, конструкция switch в том виде, в каком она есть в С/C++,
S>>>Он такой везде
ARK>>Да нет, такого нет больше нигде (ну, лично я не помню других подобных языков).
S>Примеры?
C#, Go, Ruby, Pascal, Ada, Eiffel...
UPD. Сейчас посмотрел, в Java и JavaScript break необязателен, хотя мне казалось, что был обязателен. Теперь я знаю 4 языка с таким оператором.