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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $userList = "";
    foreach ($this->currentUsers as $k => $v)
    { 
        $userList .= ($v->first_name . (empty($v->middle_name) ? "" : " " . $v->middle_name)  . " " . $v->last_name . ", ");
    }
    $userList = substr($userList, 0, -2);
    ?>
    <?= $userList ?>

    Индусы отдыхают.

    Запостил: anycolor, 28 Января 2011

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

    • Изобретательно.
      Ответить
    • Ну может писалось второпях?
      Ответить
      • нет, у человека было достаточно времени на обдумывание.
        Ответить
    • у индусов пятницо.
      Ответить
    • Не вижу ничего смертельного, кроме лишних скобок, $k и последней строчки.
      Ответить
      • печально, что не видите...смертельного ничего и нету, но такая манера написания кода - это лол)
        Ответить
        • ну на самом деле - implode здесь в пролёте без предварительной обработки массива, а юзание array_map и т.п. потребует написание хоть и маленькой, но callback-функции. Оно может быть и будет кошернее выглядеть, но даже в читабельности выигрыша особого не будет. Единственное, что можно было-бы подсократить, так это $v->first_name ... $v->last_name убрать в отдельный метод.

          Хотя, конечно, в столь простом случае можно было написать и по другому.
          Ответить
          • Тут разве что вместо 6-й строки вставить перед 4-й:
            if(strlen($userList)) $userList .= ", ";

            (и убрать . ", " в 4-й).

            Но это частично дело вкуса.
            Ответить
            • И у нас получится куча "слепленных" пользователей и запятая в конце... : )
              Ответить
        • Раз уж спор зашёл о читабельности кода, то лучшим аргументом в пользу того, что этот код может быть читабельнее - это сам код. Предложите лучше вариант.
          Ответить

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