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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
<?endif?></ul><?endif;?><?endif;?><ul id="gnb-section-help" class="gnb-menu"><?if(isset($group['HelpGroup'])):?>
        <?for($i=0;$i<count($group['HelpGroup']);$i++):?>
        <?$groupItem = $group['HelpGroup'][$i]?>
        <?if(!$groupItem->IsItemList):?>
        <li><a target="_blank" href="<?=$groupItem->Href?>"><?=$groupItem->Content?></a></li>
        <?else:?>
        <li class="gnb-dropdown">
          <a href="#" class="btn gnb-dropdown-toggle-link">
            <?if(isset($groupItem->Content) && $groupItem->Content != ""):?><span class="gnb-dropdown-toggle-text"><?=$groupItem->Content?></span><?endif?></a><a href="#" class="btn gnb-dropdown-toggle"><i>▾</i></a>
          <ul class="gnb-dropdown-menu">
            <?if(isset($groupItem->ItemList)):?>
            <?for($i=0;$i<count($groupItem->ItemList->Item);$i++):?>
            <?$subItem = $groupItem->ItemList->Item[$i]?>
            <li><a target="_blank" href="<?=$subItem->Href?>"><?=$subItem->Content?></a></li>
            <?endfor?>
            <?endif?>
          </ul>
        </li>
        <?endif?>
        <?endfor?>
        <?endif?>
      </ul>

Встретил в одном из проектов.
Долго думал к какому языку отнести это дело, решил, что всё же PHP.

Не пишите так никогда, это как минимум, нечитаемо.

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

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

      • Я php не знаю...
        Имелась в виду возможность использовать фигурные скобки?
        Ответить
        • Тут много вариантов, как можно было сделать. Во-первых, вовсе не обязательно окружать XML-скобками каждый оператор. Можно было написать так:
          <?endif;
          endfor;
          endif?>
          Во-вторых, да, можно было использовать фигурные скобки вместо всех этих endXXX. Но это всё мелочи. Самое главное, что здесь слишком часто переключаются режимы PHP/HTML.

          Все эти циклы и ветвления можно было вынести в отдельную функцию, которую принято называть вьюхелпером или декоратором.

          Можно и не всё выносить, а частично:
          <ul id="gnb-section-help" class="gnb-menu">
            <?if(isset($group['HelpGroup'])) {
              for($i=0;$i<count($group['HelpGroup']);$i++) {
                $groupItem = $group['HelpGroup'][$i];
                  if(!$groupItem->IsItemList) {?>
                  <li><?=Helper1($groupItem)?></li>
                <?}else{?>
                  <li class="gnb-dropdown">
                    <a href="#" class="btn gnb-dropdown-toggle-link">
                      <?=Helper2($groupItem)?>
                    </a>
                    <a href="#" class="btn gnb-dropdown-toggle"><i>▾</i></a>
                    <ul class="gnb-dropdown-menu">
                        <?=Helper3($groupItem)?>
                    </ul>
                  </li>
                <?}
               }
             }?>
          </ul>
          Ответить
        • Это неважно. Это нечитаемо. Мне наплевать, использует человек скобки или end%structure%, но отбить он просто был обязан. Здесь тупо непонятно какой энд к какому стейтменту относится, если бы я редактировал такой код, с вероятностью в 75% я оставил бы закрытие дива не в том стейтменте, а браузер бы привычно проглотил и не заметил.
          Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8