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

    +157

    1. 1
    <button type="button" class="btn blue" style="float: left; margin-bottom: 20px; margin-left: 15px;" onclick="window.location = '/cars/car/update/id/<?php echo $model->id; ?>'"></button>

    Проект работает на основе Yii framework. Тут явное пренебрежение всеми концепциями и стандартами: от размещения css в html элементе, до не понимания, как устроен веб в целом -- почему window.location, а не обычный линк, для меня остается тайной. Искренне желаю взглянуть в лицо автору кода.

    Запостил: creepy-code, 05 Марта 2015

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

    • Печальные плоды книг а-ля "HTML и CSS за 1 день".
      Ответить
    • Как будто по стандартам Yii 1 там все было бы значительно красивей
      Ответить
      • по стандартам/ рекомендациям js и HTML было бы уже красивей
        Ответить
    • Здесть скорей категория HTML/CSS/JS

      А по стандартам Yii 1 button вывести нихрена не легче, чем просто вписать в представление html-код
      Ответить
      • В чем сложность?

        <?= CHtml::link('Редактировать', ['/cars/car/update', 'id'=>$model->id], ['class'=>'btn btn-success']) ?>
        Ответить
        • <a class="btn btn-success" href="/cars/car/update<?= $model->id ?>">Редактировать</a>


          покороче вышло
          понятно, что там еще URL надо генерировать на лету, а при локализации там появится еще говна, но все равно делать согласно замыслу Yii 1обычно себе дороже.
          Ответить
          • > покороче вышло
            Ага... На десяток символов покороче... А в итоге поломал ЧПУ, которые могли работать в оригинале и запорол ссылку - вот всяко там было /cars/car/update/10 или /cars/car/update?id=10, а не /cars/car/update10. И ради чего была эта "оптимизация"?

            Ну и <?php ?> посреди атрибутов, имхо, смотрится ужасно.
            Ответить
            • а я и не говорю, что это хорошее решение. мы тут спорим, что уебищнее - говно с yii или говно без yii.
              Ответить
    • Почему висит onclick - потому что это кнопка. А фигачить CSS для того, чтобы линк выглядел, как кнопка (или создавать форму, над которой ты бы также поржал), у автора может не быть ни времени, ни желания. По той же причине css внутри style-атрибута.

      А причиной всему "Надо через 10 минут, у нас презентация, а кнопка не работает! ААААА!" от менеджера.

      Говнокод? Да! Ржать над ним? Плакать скорее, причём понимая вероятные причины.
      Ответить
      • Недостаток времени? - Возможно. Недостаток знаний? - Определенно, да.

        Времени, чтобы сделать ссылку и повесить на нее класс или те же стили, занимает ровно столько же, сколько и эта реализация.
        Ответить
        • Класс не обязательно будет корректно работать на ссылке. А PHP-программисту совсем не обязательно знать CSS настолько, чтобы корректно закодить ссылку в кнопку. Более того, если кнопки используются стандартные для браузера, то это фактически невозможно. Но если вы не согласны - я с удовольствием посмотрю на реализацию.
          Ответить
          • Что значит "корректно закодить ссылку в кнопку"?
            Там нужно было сделать ссылку для перехода на страницу редактирования -- всё. Эта задача реализуется при помощи тега <a href='...'></a>.
            Ответить
            • Есть некоторое отличие от элемента со стилем "кнопка" от элемента со стилем "ссылка".
              Ответить
              • Пришлите ссылку на стандарт, пожалуйста, а то может быть это я говнокодер +)
                Ответить
                • В том и проблема, что стандарта нет. У меня как-то был случай, когда в системе была частично стилизованная кнопка - покрашен фон, изменён бордер-радиус. В остальном она выглядела, как обычная браузерная кнопка. И вот её-то я бы никогда не стал даже пытаться закодить из ссылки CSS-ом.

                  Опять же, если в той системе стили от какого-нибудь бутстрапа - да, программер погорячился слегка.
                  Ответить
                  • > частично стилизованная кнопка
                    Это вообще возможно хоть в каком-нибудь браузере? Емнип, нативное оформление кнопки полностью отваливается после любой попытки что-то перекрасить или скруглить. Поэтому либо вообще не трогаем стиль, либо делаем полностью свой. Третьего не дано.

                    Но я могу ошибаться. Я не профи в вёрстке.
                    Ответить
                    • http://jsfiddle.net/gj3pnne4/
                      Ответить
                      • Смотрится как говно, если честно. Нативный стиль, как я и говорил, слетел. Остался зеленый прямоугольник со скруглёнными углами да 3д рамочка вокруг. Такую примитивщину разве сложно запилить из ссылки?
                        Ответить
                        • ну как то так. С учетом что я в это не разбираюсь - очень просто

                          http://jsfiddle.net/n3evra28/
                          Ответить
      • Там нестандартная кнопка, кстати.
        Ответить
        • Чем она нестандартная? button и blue? Далеко не факт. Т.к. больше никакой информации не приведено, то это не говнокод, а говнопост.

          Ну и да, использовать вот это - <?= CHtml::link('Редактировать', ['/cars/car/update', 'id'=>$model->id], ['class'=>'btn btn-success']) ?> вместо чистого html - это тот ещё пиздец, конечно (а это автор приводит, как пример правильной кнопки, причём почему-то автоматически подразумевая, что используется бутстраповская кнопка).
          Ответить
          • Согласен, что это хуже чистого html, потому что, как минимум, требует процессорного времени на генерацию html.
            Но, есть важный момент -- сам адрес ссылки. Фреймворк, как вы могли заметить, используется Yii. А Yii в свою очередь поддерживает настройку маршрутов. Т.е. исходный /cars/car/update/id/<id> можно заменить в настройках приложения на что душе угодного, хоть на /cs-c-u-<id>, при условии, что этот адрес обрабатывается urlManager'ом.
            В своем примере, я хотел показать лаконичность кода, который легко читается и его можно легко рефакторить.
            Я ни в коем случае не претендую на правильный вариант кнопки -- исходное решение неплохо справляется со своим замыслом. Тут дело в другом: если я использую фреймворк, я следую его тенденциям.
            А иначе, какой смысл использовать фреймворк, если можно накостылить велосипедов с нуля?!
            Ответить
            • Вот с этой мыслью (что нужно придерживаться стандартов того, на чём пишешь) абсолютно согласен.

              Насчёт ссылок-кнопок - у меня самого было куча случаев, когда приходилось писать такие вот решения по причинам, которые я перечислил. Обычно это бывает в проектах, в которых подобные решения можно считать даже красивыми, потому что остальной код - это полный пиздец. Ну и опять же, как я уже писал - у PHP-программистов с фронтендом в целом жопа. Лучше нанимать отдельного человека на это, если есть возможность.
              Ответить

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