Re[7]: о0
От: Sheridan Россия  
Дата: 17.12.15 13:43
Оценка: -2 :))
Здравствуйте, AlexRK, Вы писали:

S>>>>Аргументы?

ARK>>>Точно такие же скачки сквозь разные ветки управления. Сишный оператор switch не является оператором структурного программирования.
S>>Нет. При отсутствии break он будет выполняться строго сверху вниз, начиная от сработавшего case.
ARK>Строго вниз, строго вверх, нестрого назад — не имеет значения. Это разные ветки управления.
С этого места поподробнее: с какого времени порядок следования инструкций перестал иметь значение?

ARK>>>Чтобы "код выполнялся не полностью", существуют функции.

S>>Ну да, вместо читаемого кода плодить кучу функций и оборачивать всё if'ами. Годный подход, ага.
ARK>Какую кучу функций? Функций должно быть столько, сколько надо.
ARK>Вместо вашего монстра код должен быть таким:
ARK>
ARK>void DoFullWork()
ARK>{
ARK>    checkLastWork();
ARK>    clearTemp();
ARK>    DoOptimizedWork();
ARK>}

ARK>void DoOptimizedWork()
ARK>{
ARK>    ClearCaches();
ARK>    DoWork();
ARK>}

ARK>void DoWork()
ARK>{
ARK>    ...
ARK>}
ARK>

А чего это забываем, что эти функции вызывать, обернув if'ами? Давай я за тебя
void DoFullWork()
{
    checkLastWork();
    clearTemp();
    DoOptimizedWork();
}

void DoOptimizedWork()
{
    ClearCaches();
    DoWork();
}

void DoWork()
{
    ...
}

int main()
{
    someFlagEnum flag = getFlag();
    if(flag==doFullWork)      { DoFullWork(); }
        if(flag==doOptimizedWork) { DoOptimizedWork(); }
        if(flag==justDoIt)        { DoWork(); }
}

Неужели ты будешь жертвовать читабельностью кода, будешь запутывать код только ради того чтобы свитч не применять? Да ладно?
Неужели вариант со свичем НАСТОЛЬКО хуже?
switch(getFlag())
{
    case doFullWork:      { checkLastWork(); clearTemp(); }
    case doOptimizedWork: { clearCaches(); }
    case justDoIt:        { doWork(); }
}

Более того, добавляем еще три флага и рисуем еще три функции? Еще больше запутываем?
Ты случаем не споришь только ради спора?



S>>switch в данном случае не при чём. Надо быть просто внимательным.

ARK>Абсолютно все языковые конструкции — это об удобстве и внимательности. Некоторые удобны, некоторые нет. А некоторые просто уродливы, как сишный switch.
он такой везде.

ARK>UPD. Сейчас посмотрел, в Java и JavaScript break необязателен, хотя мне казалось, что был обязателен. Теперь я знаю 4 языка с таким оператором.

Проверил? Да ладно? о0
Я вот действительно проверил: http://www.sergos.ru/player/js.html
    function sw(val)
    {
      $( "#dd" ).append( "without break. val: " + val + "<br />---<br />" );
      switch(val)
      {
        case 1: { $( "#dd" ).append( "case 1<br />" ); }
        case 2: { $( "#dd" ).append( "case 2<br />" ); }
        case 3: { $( "#dd" ).append( "case 3<br />" ); }
      }
      $( "#dd" ).append( "-----------------------------<br />" );
    }
    
    function swb(val)
    {
      $( "#dd" ).append( "with break. val: " + val + "<br />---<br />" );
      switch(val)
      {
        case 1: { $( "#dd" ).append( "case 1<br />" ); break; }
        case 2: { $( "#dd" ).append( "case 2<br />" ); break; }
        case 3: { $( "#dd" ).append( "case 3<br />" ); break; }
      }
      $( "#dd" ).append( "-----------------------------<br />" );
    }
    
    for (i=1; i<=3; i++)
    {
    sw(i);
    swb(i);
    }


ARK>>>Да нет, такого нет больше нигде (ну, лично я не помню других подобных языков).

S>>Примеры?
ARK>C#, Go, Ruby, Pascal, Ada, Eiffel...
Точно так же проверял, как и жабаскрипт?
Matrix has you...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.