Re[6]: семантика switch/case
От: AlexRK  
Дата: 17.12.15 11:56
Оценка:
Здравствуйте, 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 языка с таким оператором.
Отредактировано 17.12.2015 12:08 AlexRK . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.