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

    +148

    1. 1
    implode("','", array('product_gems'))

    почему бы не заменить такое просто строкой...

    Запостил: darkmyan, 29 Марта 2010

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

    • Хитрый ход такой хитрый.
      Ответить
    • А пример из кода можно побольше?
      По одной строчке трудно определить цвет кода...
      Ответить
    • их было больше. или будет больше. или кодогенерация.
      без контекста не понятно
      Ответить
      • какая разница сколько их было или будет. если это выдернуто из исходника, то в любом случае лучше записать просто строкой.
        Ответить
        • Дык строка-то, наверно, динамическая. Она формируется из каких-то данных.
          Ответить
        • Без подробностей тут не разобраться кто прав =)
          Ответить
          • ладно, раз уж сильно просите, вот:

            $res = db_query(db_rewrite_sql("SELECT n.nid FROM {node} n LEFT JOIN {content_type_product_gems} p ON p.nid=n.nid WHERE n.type IN ('". implode("','", array('product_gems')) ."') ORDER BY p.field_gems_qty_value ASC"));
            Ответить
            • А какой твой вариант?
              PS: и ещё можно осветить инициализацию array('product_gems') ...
              Ответить
              • ну я заменил бы на такое:

                $res = db_query(db_rewrite_sql("SELECT n.nid FROM {node} n LEFT JOIN {content_type_product_gems} p ON p.nid=n.nid WHERE n.type = 'product_gems' ORDER BY p.field_gems_qty_value ASC"));
                Ответить
                • Ух, не заметил ковычек...
                  Сорри
                  Думаю, что автор кода тупо копировал запросы от скрипта к скрипту и не всё вычистил.

                  Да - косяк, говнокод - ну если маленький.
                  Все ошибаются по-мелочам, но это не повод их постить.
                  Если сюда писать весь маленький говнокодек, то проект обогатеет как рекламная площадка, а посетители завязнут и станет скучно.
                  Ответить
                • К примеру:

                  Код одного анализируемого проекта:
                  function fac_getTextOfThePage($text,$spacesPerPag e,$pageNum,$url) {
                  $text=trim($text);
                  if($pageNum>1) {
                  $cntr=0;
                  $pos=0;
                  $strlen=strlen($text);
                  while($cntr<$spacesPerPage*($pageNum-1) && $pos+1<$strlen-1) {
                  $curpos=strpos($text," ",$pos+1);
                  if(!$curpos) {
                  $tillTheEnd=true;
                  break;
                  }
                  else {
                  $cntr++;
                  $pos=$curpos;
                  }
                  }
                  if(!$pos) $pos=0;
                  }
                  else $pos=0;
                  $text=trim(substr($text,$pos));
                  $strlen=strlen($text);
                  $cntr=0;
                  $pos=0;
                  $tillTheEnd=false;
                  while($cntr<$spacesPerPage && $pos+1<$strlen-1) {
                  $curpos=strpos($text," ",$pos+1);
                  if(!$curpos) {
                  $tillTheEnd=true;
                  break;
                  }
                  else {
                  $cntr++;
                  $pos=$curpos;
                  }
                  }
                  if($pos!=false) $end_pos=$pos;
                  else $end_pos=0;

                  if(!$tillTheEnd) $text=trim(substr($text,0,$end_pos)); //.' <a href="'.$url.'"><b>Далее</b></a>';
                  return $text;
                  }
                  ********************************
                  Далее у проекта была переработка:
                  function getContent($content, $curPage, $spacesPerPage) {
                  $from = ($curPage - 1) * $spacesPerPage;
                  $till = $curPage * $spacesPerPage;
                  $position = $counter = $start = $end = 0;

                  while($counter++ < $from && ($start = $position = strpos($content, " ", $position + 1)));
                  while($counter++ <= $till && ($end = $position = strpos($content, " ", $position + 1)));

                  return substr($content, $start, $end - $start);
                  }
                  ********************************
                  Работа обоих алгоритмов идентична!
                  Первичный код тоже говнокодик!
                  Конечно больше, чем в одну строчку, но я его не пытаюсь постить.
                  Так как посетителям тупо будет неинтересно.
                  Ответить
                  • Используйте, пожалуйста тэги:
                    [ code ] [ / code ]
                    Ответить

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