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

    +166

    1. 1
    2. 2
    3. 3
    function array_min_recursive($arr, &$peaks = array(), $current_key = '') {
      return array_max_recursive($arr, $peaks, $current_key, true); // Неожиданно, правда?
    }

    Запостил: DIX315, 05 Июля 2014

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

    • Когда написали array_max_recursive, выяснилось, что он делает противоположное задуманному. Но не пропадать же добру!
      Ответить
    • А может array_max_recursive -- функция из параллельной вселенной, где всё наоборот? А здесь мы имеем просто феноменальный прорыв: разработано API для вызова такой функции
      Ответить
      • Из параллельного мозга, который в жопе
        Ответить
    • function array_max_recursive($arr, &$peaks = array(), $current_key = '') {
        return array_min_recursive($arr, $peaks, $current_key, true);
      }
      Ответить
    • Есть шанс что последним параметром передается по какому принципу делать выборку.
      Для того чтобы не копипастить кусок кода в котором нужно заменить один параметр.
      Нит?
      Ответить
      • Ну тогда стоило бы написать array_minmax_recursive и две обертки для него. А то как-то через жопу, что min может искать максимум.

        DRY это, конечно, хорошо... но только если он не противоречит здравому смыслу.
        Ответить
        • > А то как-то через жопу, что min может искать максимум.

          А в крестах, если передать std::min_element() std::greater в качестве компаратора, то получится std::max_element()
          Ответить
        • Рефакторинг, незнакомое слово для 95% php погромистов.
          Ответить
          • "Некогда рефакторить, надо код писать."
            Ответить
            • Не время сейчас думать! Вот сдадим проект - тогда все подумаем!
              Ответить
      • > Для того чтобы не копипастить кусок кода в котором нужно заменить один параметр.
        А если передать последним аргументом 42, то посчитает среднее значение? Ну не писать же лишний цикл.
        Ответить
        • А если дать ему баян и лсд...
          Ответить
        • > А если передать последним аргументом 42
          nth order statistic, очевидно же.
          Ответить
        • Да, последний флаг инвертирует режим.
          И где-то видел, как передаётся именно 42 в качестве флага, функция что-то рискованное с БД выполняла при передаче этого параметра.
          Давно правда, сейчас уже не вспомню где, поиск по своим исходникам результата не дал.
          Ответить
    • function array_max_recursive($arr, $peaks, $current_key, $delai_naoborot = false)
      Ответить

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