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

    +160.1

    1. 1
    2. 2
    3. 3
    public function getLastThreeIdeas($limit=3) {
        return $this->DB->select('SELECT id, title, user_name FROM ideas ORDER BY date DESC LIMIT ?d', $limit);
    }

    Отличный пример несоответствия названия метода и того, что он делает. По названию метода можно предположить, что он возвращает последние 3 записи. На деле можно получить больше записей блягодаря параметру $limit.

    Запостил: vavaka, 08 Декабря 2009

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

    • Как будто Вам не приходилось расширять функционал.

      Раньше возвращало три записи. Потом понадобилось больше (или меньше), а метод уже использовался во многих местах. Поэтому дописали не обязательный параметр $limit=3, чтобы не править по всему коду. А где нужно уже подставляли и 5, и 10.

      P.S. Набирайтесь опыта :)
      Ответить
      • Да не надо количество пихать в название функции.
        Ответить
        • Могла быть фишка именно такая.. Привязанная к количеству и для неё именно вот легко узнаваемое было б такое название.. Типа такого..
          Ответить
    • Правда, чтобы соответствовало можно было сделать так
      public function getLastIdeas($limit) {
          return $this->DB->select('SELECT id, title, user_name FROM ideas ORDER BY date DESC LIMIT ?d', $limit);
      }
      public function getLastThreeIdeas() {
          return $this->getLastIdeas(3);
      }

      Но это лишняя функция
      Ответить
      • сначала сказали, а потом подумали? =)
        Ответить
        • Я из личного опыта пояснил, откуда могло взяться $limit=3. Под одни нужды пишется функция. Потом оказывается, что нужно немного расширить функционал. Тогда в параметр добавляется необязательный аргумент, чтобы в остальных местах местах не менять код и можно дальше использовать эту же функцию, но уже передавать свои аргументы
          Ответить
      • А может не следовало вообще зашивать количество в имени функции?
        Ответить
        • Лично я не называю функции, чтобы там было количество
          Ответить
      • Лишняя функция уберётся при рефакторинге и получится симпатичный код.
        Ответить
    • Скопировать под нужным именем, да и отметить как Deprecated. Делов-то.
      Ответить

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