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

    +46

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    $week['monday'] = date("d.m.Y", $week_start);
    $week['tuesday'] = date("d.m.Y", $week_start + 1 * 86400);
    $week['wednesday'] = date("d.m.Y", $week_start + 2 * 86400);
    $week['thursday'] = date("d.m.Y", $week_start + 3 * 86400);
    $week['friday'] = date("d.m.Y", $week_start + 4 * 86400);
    $week['saturday'] = date("d.m.Y", $week_start + 5 * 86400);
    $week['sunday'] = date("d.m.Y", $week_start + 6 * 86400);

    Запостил: 1allen, 20 Декабря 2012

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

    • Да сколько ж можно...
      Ответить
      • Сколько нуно.
        Но поражают люди, которые никогда не слышали про, скажем +1 day.
        Ответить
    • 1 * 86400 умилило
      Ответить
      • 0*96400 не хватило для симметрии. И тарасоформатирование тут бы помогло.
        $week['monday']    = date("d.m.Y", $week_start + 0 * 86400);
        $week['tuesday']   = date("d.m.Y", $week_start + 1 * 86400);
        $week['wednesday'] = date("d.m.Y", $week_start + 2 * 86400);
        $week['thursday']  = date("d.m.Y", $week_start + 3 * 86400);
        $week['friday']    = date("d.m.Y", $week_start + 4 * 86400);
        $week['saturday']  = date("d.m.Y", $week_start + 5 * 86400);
        $week['sunday']    = date("d.m.Y", $week_start + 6 * 86400);
        Ответить
        • Правильно, "Make Alike Look Alike"
          http://www.perforce.com/resources/white-papers/seven-pillars-pretty-code
          Ответить
        • >тарасоформатирование
          А ты скромный!
          Ответить
        • Меня уже давно волнует вопрос. Как форматтер будет узнавать, что следующую строку нужно выравнивать по текущей? Или текущую - по последней. Потребуется нехилый набор правил, плюс многопроходный форматтер, не?
          Ответить
          • Если тарасоформаттер видит достаточно похожие по критерию Тараса строки, он будет равнять их так, чтобы совпадающие части стояли ровно в столбик...
            Ответить
            • Озвучьте критерий Тараса, пожалуйста.
              Ответить
              • Критерий Тараса: Строки называются похожими друг на друга по критерию Тараса тогда и только тогда, когда Тарас применил бы к ним Тарасоформатирование.
                Ответить
                • Лол, пахнет сепульками.
                  Ответить
                  • > Лол, пахнет сепульками.
                    Ага, тоже вспомнились, когда это писал ;)

                    Тарас это тот, кто применяет Тарасоформатирование к строкам похожим друг на друга по критерию Тараса.
                    Ответить
                    • Тарасоформатирование - термин, обозначающий текстовое преобразование, применяемое Тарасом к строкам, схожим по критерию Тараса.
                      Для полноты.
                      Ответить
              • Увы, невозможно объяснить, что такое Матрица тарасоформатирование... Ты должен увидеть это сам.
                http://uncrustify.sourceforge.net/examples/example.c
                Достаточно положить в makefile что-то вроде ТАРАСOFORMAT: uncrustify --replace -c ~/uncrustify.cfg *.c *.cpp *.h
                Ответить
          • Две соседние строки содержат или : или :=
            Ответить
            • А если в соседних строках разное количество двоеточий, как форматировать?
              Ответить
              • По первому.
                Если в одной : := а в другой := : , то := приоритетнее.
                Также запятые внутри перечислений и в аргументах одинаковых функций.
                Ответить
        • Код с тарасоформаттером:
          $day_names = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
          
          $map_length = function($value) { return strlen($value); };
          $maxlength = max(array_map($map_length, $day_names));
          
          for ($code = '', $i = 0; $i < 7; $i++) {
            $code .= sprintf("\$week['%s'] %s = date(\"d.m.Y\", \$week_start + %d * 86400);\n", 
          	$day_names[$i], 
          	str_repeat(' ', $maxlength - strlen($day_names[$i])), 
          	$i
            );
          }
          
          eval($code);
          Ответить
    • Вот так понятнее:
      $day_names = array_flip(array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'));
      
      $func = function($value) use ($week_start) {
      	return date("d.m.Y", $week_start + $value * 86400);
      };
      
      $week = array_map($func, $day_names);
      Ответить

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