"PHP" / Говнокод #20361 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
/**
  * @param int $day
  * @return bool
  */
protected function isWorkingDay($day)
{
    return $day % 8 <= 5;
}

Cпособ определить, является ли указанный день (передается номер дня в неделе от 1 до 7) рабочим. Чем автора не устроил return $day <= 5 - непонятно..

Запостил: feversocial feversocial, (Updated )

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

  • Наверное тем что предполагалось что будет передаваться день месяца, а потом забили?
    Ответить
    • передается именно номер дня в неделе, т.е. date('N'). в данном методе можно хоть $day % 8, хоть $day % 20 - результат при $day <= 7 все равно один и тот же 🙂
      Ответить
    • я сначала подумал что % 8 - это чтобы к инту привести, но потом посмотрел на phpDoc
      Ответить
      • Из него просто офигенно понятно, что делает данная функция, какие параметры она ждёт и какие на них есть ограничения.
        Ответить
        • Ну разве что можно добавить описание $day. А в ообще докстринг сделан на скорую руку для того чтобы указать типы, кому не нравится пусть допишет 🙂
          Ответить
        • Вот меня на работе заставляют как-то так делать:
          // This class holds debug information.
          class DebugInformation {
              public:
                  // Returns the link to see debug information.
                  string link() const { return m_link; }
                  // Sets the link to see debug information.
                  void set_link(string link) { m_link = std::move(link); }
              private:
                  // Holds the link to see debug information.
                  string link;
          }

          НАХУЯ?
          Ответить
            • void set_link(string link) показывает, что класс DebugInformation скопирует к себе строку, переданную как параметр. Если бы передавался const string&, caller мог бы подумать, что мы берём ссылку на строку, и исходную строку нельзя освобождать.
              А подход c std::move позволяет иметь столько же копирований, сколько и при приёме const string&, но быть более понятным в сигнатуре.
              Ответить
              • А если оригинальная строка не нужна и вызывающий сделал move сам, то получается очень быстро. Данный подход позволяет избавиться от 2х перегрузок для l и r-values
                Ответить
            • > И правда, нахуя?

              Борманд, где твоё C++-чутьё? Так же можно сыкономить одно копирование, выжать каплю ПИРФОМАНСА, если в качестве входного параметра передаётся временный объект! Мув же почти бесплатный.
              // Временный объект, созданный из const char *,
              // не будет скопирован, его содержимое переедет
              // внутрь debugInfo без копирования!
              debugInfo.set_link("http://lmgtfy.com/");
              
              // Аналогично, если вызывающему строка
              // больше не нужна, и он мувает её сам.
              debugInfo.set_link(std::move(rtfm_link));
              Ну и так меньше унылых констрефов писать.
              Ответить
              • А почему в первом примере не произойдет копирование по значению при передаче в set_link?
                Ответить
                  • так а почему его переместят?
                    метод ожидает string, и я думал const char* преобразуется в string, потом по значению передается в set_link
                    Ответить
    • да это автогенерация, к которой проебали написать описание
      Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8