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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    $currurl = str_replace(" ", '', $this->helper('core/url')->getCurrentUrl());
    if (strpos($currurl, 'index.php/')) {
        $currurl = str_replace('index.php/', '', $currurl);
    } else if (strpos($currurl, '/index.php')) {
        $currurl = str_replace('index.php', '', $currurl);
    }
    $url_suffix = (substr($currurl, strlen(Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB))));
    <?php if (strlen($url_suffix) <= 0) : #not homepage ?>
    ...

    Magento. Увидел в template, код одной английской компании.

    Запостил: crook, 06 Июня 2013

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

    • Только мне пыхокод кажется жутко нечитабельным из-за дикого смешения стилей?

      В одной строке 7 используется пять разных конвенций об именовании:

      $разделение_подчёркиванием_строчными = (всёслитнострочными(...Прописная::camelCase(Ну_Это_Вообще_Ужас::РАЗДЕЛЕНИЕ_ПОДЧЁРКИВАНИЕМ_ПРОПИСНЫМИ))));
      Ответить
      • > Только мне
        Не только. Неконсистентность одной только стандартной библиотеки может доставлять баттхёрты, а если добавить сюда все схемы именования, придуманные за десятилетия непризнанными гениями, масштабы трагедии поражают воображение.

        В C++, кстати, похожая ситуация. Стандартная библиотека ещё более-менее вменяема (хотя всё же чётко разделяется по стилю на части cstdlib/iostreams/stl), но разных стилей за десятилетия придумали тыщи, и частенько всё это смешивается в одном модуле.
        Ответить
        • Qthago delenda est!
          Ответить
          • Qtон, залогиньтесь.Это укороченный, чеканный вариант, который выглядит как one-liner. Он кажись говорил длинее, типа должен быть уничтожен, иначе нам самим скоро наступит жопа.
            Ответить
            • Qton это новый язык программирования? Как Python, только с буквами q вместо пробелов?
              Ответить
      • Вы не правы. Нужно придержыватся требований фреймворка\whatever, в даном случае Magento. Здесь не соблюдены только требования наименования переменных, они должни называтся camelCase'ом.
        Саму суть поймут только Magento разработчики ;)
        Ответить
      • > Ну_Это_Вообще_Ужас
        MS_Power_Shell style. МС вообще особенно любят конвеции такие, чтобы печатать было максимально неудобно: чем больше прописных и подчерков - тем лучше.
        Ответить
    • Пфф, народ, что вы к стилю пристали, ведь и так понятно, что это смешение. Вы суть кода уловите: этим куском сами знаете чего проверяется не есть ли даная страница домашней, оцените элегантность решения, его универсальность и главное - очевидность!
      Ответить
      • 1. index.php может встретиться где угодно, а не только в начале URL. Пример: юзер ввёл фразу «index.php» в строку поиска или захотел зарегистрироваться на сайте под таким именем.

        2. URL может содержать в конце знак вопроса, который не делает страницу «недомашней», однако, не ловится таким кодом. Более того, на страницу можно попасть с агрегаторов новостей и тогда URL будет содержать GET-параметры utm_source и т. п.
        Ответить
        • Кстати strpos возвращает индекс, начинающийся с нуля или FALSE, если не найдено. Поэтому для кривого урла "index.php", без http и домена в начале, этот код скажет, что он не содержит index.php.
          Ответить
          • Да, большое зло заключается в том, что if(x) не отличает ноль от FALSE, что приводит к монстроподобным выражениям типа if (x !== FALSE).

            PHP — край загадок и чудес. У меня был разрыв шаблона, когда узнал, что empty("0") == TRUE (при том, что empty("000") == FALSE), а is_null("0") == FALSE.
            Ответить
    • а строка №8 идет сразу после №7? тогда до строки №8 все это должно быть текст, иначе не скомпилится
      Ответить
      • между ними были пустые строки, так что это я плохо скопипастил :)
        Ответить

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