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

    +158.1

    1. 1
    2. 2
    3. 3
    4. 4
    function fDim($m){
        $vDim = array(1, 3, 5, 7, 8, 10, 12);
        return (in_array($m, $vDim) ? 31 : ($m == 2? 28 : 30));
    }

    Функция возвращает количество дней в месяце. Очень забавный пассаж, ага?

    Запостил: sharpstream, 10 Августа 2009

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

    • А по мне так достаточно элегантное решение, разве что не 100% рабочее :)
      Ответить
    • Стоит учитывать, что не всегда в феврале 28 дней, есть еще и высокосные года.. Причем вычисление "а высокосный ли год?" не так тривиально (что-то там с делением на 4 и в то же время с исключениями при делении на 100(?)).. Так что код не рабочий, и кажущаяся простота ни как не должна быть оправданием.

      P.S. решил откоментить, а то мало ли, может кто и не понимает в чем собственно "говнокодство"...
      Ответить
      • в ближайшие 90 лет прокатит и просто деление на 4 :)
        Ответить
    • Ну во-первых название функции никуда не годиться. Во-вторых логика тут вообще не нужна. Всю функцию можно представить в виде таблицы. В третьих не понятно какой параметр ожидает функция (месяц может отсчитываться и с 0 и с 1). Ну и самое главное, что этот код не работает (о чём было уже сказано выше).
      Ответить
    • Гы, а мануал кто-то уже запретил?
      Исли нужна какая либо функция - скорее всего она уже кем-то создана.
      Особенно с датами. :)
      Это-же нужно было выдумывать такую функцию если она заменяется стандартной функцией.
      Ответить
    • $num = cal_days_in_month(CAL_GREGORIAN, 8, 2009);
      или
      $num = date('t', $timestamp);
      Ответить
    • Сначала я подумал что DIM это наследие темного прошлого автора где его имел бейзик (там так массивы определяются), но потом догнал что это day(s) in month.
      Неужели же
      function dayInMonth($month)

      смотрелось бы так плохо? Нафиг эта шифровка.
      Ответить
    • К функции не передаётся timestamp, с данной вводимой информацией невозможно вычислить високосный год или нет. А вы предлагаете решения со timestamp, что несколько иная ситуация
      Ответить

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