1. PHP / Говнокод #13445

    +148

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    $type = isset($config['type']) ? $config['type'] : 'default';
    switch($type) {
        default:
            $blockClass = 'adminhtml/widget_grid_massaction_item_additional_default';
            break;
    }

    Magento core

    Запостил: crook, 18 Июля 2013

    Комментарии (20) RSS

    • На мой взгляд, если это просто вырвано из коммита - не говнокод, просто в процессе разработки...
      Ответить
    • Всегда поражало наличие "break;" в кейсе "default:" непосредственно перед закрывающейся скобкой
      Ответить
      • Всегда поражало наличие "break;" в кейсе
        Ответить
        • Кстати, бывают ситуации, когда свитч-кейс внутри цикла и нужно брякнуть цикл. Как это сделать в Си и в PHP, ведь там брякается не цикл, а свитч-кейс?
          Ответить
          • goto.sex
            Ответить
          • PHP: break 2; (http://www.php.net/manual/ru/control-structures.break.php)
            Ответить
            • > break $num;
              о_О
              Это ж какой трэш можно на PHP написать до версии 5.4!
              Ответить
              • Например, такой:
                <?php function Arrangement10($k) {
                  $m = 10; $n = 1; 
                  do {
                    do {
                      do {
                        do {
                          do {
                            do {
                              do {
                                do {
                                  do {
                                    do {
                                        break $m - $k;
                                    } while (false);
                                    $n *= $m; $m--;
                                  } while (false);
                                  $n *= $m; $m--;
                                } while (false);
                                $n *= $m; $m--;
                              } while (false);
                              $n *= $m; $m--;
                            } while (false);
                            $n *= $m; $m--;
                          } while (false);
                          $n *= $m; $m--;
                        } while (false);
                        $n *= $m; $m--;
                      } while (false);
                      $n *= $m; $m--;
                    } while (false);
                    $n *= $m; $m--;
                  } while (false);
                  return $n;
                }
                
                echo "Размещение из 10 по 3 равно 10*9*8 = " . strval(Arrangement10(3)) . PHP_EOL;
                P.S. На Ideone на 5.4 перешли, сволочи!
                Ответить
        • а как же иначе? объясните быдлокодеру
          Ответить
          • Эта претензия не к тем кто пользуется break'ом в switch'е ;)

            Эта претензия к тому извращенцу, который придумал такую ебанутую конструкцию как сишный свич. Натуральный костыль, запиленный на скорую руку из одного блока и меток потому что автору было лень немного подумать... Сколько программ реально пользуются "проскоком" с одной ветки на другую? Да их практически нет... Ну кроме дафф девайса, и тех, которым приходится выполнять одинаковые действия на несколько констант (а это опять ебанутость свича, не позволяющая просто перечислить константы через запятую, как в паскале). И если бы автор свича немного пошевелил мозгами - то break писать бы не приходилось. Было бы как-то так:
            switch (x) {
            case 1,2..5:
                std::cout << "1 or 2..5" << std::endl;
            case some::enum::value:
                std::cout << "some::enum::value" << std::endl;
            case default:
                std::cout << "default" << std::endl;
            }
            Но теперь уже никто ничего не изменит ;( И эта конструкция, к сожалению, останется навсегда.
            Ответить
            • Я видел одну. Что-то такое:

              switch(i)
              case 1:
                  asd;
              case 2:
                  asd2;
                  if (i==1)
                      break;
                  asd3;
                  break;

              Но это достойно отдельного говнокода.
              Ответить
      • А наличие "break;" в других кейсах непосредственно перед закрывающейся скобкой никогда не поражало? Подсказка: "default:" может быть не последним.
        Ответить
        • Поржало)
          Подсказка: "непосредственно перед закрывающейся скобкой"
          Ответить
          • $a = 'Apple';
             switch ($a) {
                 default:
                     echo '$a is not an orange<br>';
                     break;
                 case 'Orange':
                     echo '$a is an orange';
                     break;
             }
            А тут?
            Ответить
            • А тут "break; }". У меня же было написано "наличие "break;" в кейсе "default:" перед скобкой"
              Ответить
              • О том и говорю, что ключевой момент здесь — перед скобкой. У знающих толк в извращениях "default:" может быть и не последним...
                Ответить
      • Рефакторинг и, внезапно, твой default уже не последний и break; не перед скобкой.
        Ответить
        • Ну если только рефакторинг будет делать говнокодер ;)
          Ответить
        • Рефакторинг предполагает улучшение кода, вы же говорите про обфускацию.
          Ответить
        • Приведите, пожалуйста, вменяемый пример, в котором вам понадобилось добавлять ветки ниже дефолтной.
          Ответить

    Добавить комментарий