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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    if(count($colors)>1){
        if($i==2){
            $col = $colors[1];
        }else{
            $col = $colors[0];
        }
    }else{
        $col=$colors[0];
    }

    Вот где не надо - тьма тернарных операторов, а где их логичнее всего ожидать - вот такой огород из IF/ELSE

    Запостил: Khvorostin, 13 Октября 2014

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

    • Тут даже тернарного оператора не нужно:

      $col=$colors[(int)(count($colors)>1&&$i==2)];
      Ответить
      • Круть!
        Ответить
      • ВыPerlился!
        Ответить
        • В каждом углу perl мерещится?
          Ответить
          • Нет, только в тех местах где много странных символов в рандомном порядке и среди них есть $.
            Ответить
            • > много странных символов в рандомном порядке и среди них есть $
              https://www.nyse.com/quote/index/NYA
              Ответить
            • Ну почему сразу Perl?

              Google closure compiler может сделать «перл» даже из ECMAScript'а, причём совершенно автоматически.
              Ответить
      • ну, мне кажется, что нужно как-то дозировано такой код писать. все же, он не так легко читается, как другие думают, а его другими поддерживать надо еще
        Ответить
      • Меня смущает волшебное число 2, хотелось бы услышать мнение топикстартера по этому поводу.

        Моя догадка - тут неявно предполагается, что цветов всегда не больше двух, причём индексируются они с единицы.
        Если это действительно так, то при добавлении нового цвета всё посыпется. Поэтому правильный (с моей точки зрения) вариант:
        $numColors = count($colors)
        $colorIndex = (0 < $i && $i <= $n) ? ($i - 1) : 0;
        $selectedColor = colors[$colorIndex];
        Ответить
    • Зато читаемо.
      Ответить
    • Это всё потому что тернарный оператор в ПХП — говно. Вот с ним и не связываются.
      Ответить
      • Один раз - не тернарас. Говно проявляется только в тех случаях, когда два и более тернарников встречаются в одном выражении.
        Ответить
        • А на Перле можно написать говно даже в тех случаях, когда в выражении тернарник единственный.
          http://govnokod.ru/16479#comment242321
          Ответить
      • Отсыплю тебе скобок, бро. (((())))
        Ответить
    • Выхлоп конпелятора замыканий (с параметрами по умолчанию для js):
      $col=1<count($colors)?2==$i?$colors[1]:$colors[0]:$colors[0];
      Ответить

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