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

    +167

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    class country extends baza
    {
    ......
    function show_description($country=NULL)
    {
        if ($this instanceof country)
            $quest="SELECT description FROM countries WHERE name=\"$this->name"";
        if ($this instanceof city) // йобаный стыд!!! 0_0
            $quest="SELECT description FROM cities WHERE name\"$this->name\" AND country=\"$country\" ";
    ......
    }
    
    class city extends country
    .....

    предок "country" знает о потомке "city"

    Говнокод из говнокнижки Елены Бенкен "PHP, MySQL, XML Программирование для интернета" БХВ-Петербург,ISBN 5-9775-0039-4 страница 209

    Запостил: StriderMan, 16 Января 2011

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

    • Что-то говнокоды из книжек на PHP начинают набирать популярность...
      И после этого ещё удивляются, что "некоторые PHP программисты иногда говнокодят"...
      Ответить
      • Говнокодеры стали говнопейсателями
        Ответить
      • документация пхп состоит из говна. Когда смеешься над ней, то тебе отвечают: "ну это же пример, а не настоящее приложение"
        Популярная красная библия пхп (издательства врокс) состоит из говна.
        Популярная книга котерова состоит из говна.

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

          Поэтому если надо научиться чему-то совершенно новому - предпочитаю книжки из серии "Для чайников". Но это не значит что они должны учить говну. В них должны быть просто и доступно описаны самые примитивные вещи. Буквально разжевано в кашу. А что посложнее - уже сам допетришь по мануалам, потом.
          Ответить
    • это вообще какой-то феерический пиздец
      все таки ООП в ПХП надо запретить
      все равно им пользоваться не умеют
      Ответить
      • В красной wrox-книге "PHP 5 для профессионалов" я говна не увидел
        Ответить
        • но руки всё равно помойте
          Ответить
          • и глаза
            Ответить
          • цитирую эту книгу:

            Использование системы
            Теперь вы можете оценить реальную мощь объектноориентированного подхода.
            Следующий код будет подробно отображать все записи о контактах из базы данных.
            Этот код нужно поместить в файл test.php.
            <?php
              require_once('class.DataManager.php');
              function println($data) {
                print $data . "<br>\n";
            {  
              $arContacts = DataManager::getAllEntitiesAsObjects();
              foreach($arContacts as $objEntity) {
                if(get_class($objEntity) == 'individual') {
                  print "<h1>Частное лицо - {$objEntity->__toString()}</h1>";
                } else {
                  print "<h1>Организация - {$objEntity->__toString()}</h1>";
            {    
                if($objEntity->getNumberOfEmails()) {
                  //У нас есть электронная почта! Выведите заголовок
                  print "<h2>Электронная почта</h2>";
                  for($x=0; $x < $objEntity->getNumberOfEmails(); $x++) {
                    println($objEntity->emails($x)->__toString());
            {      
            {    
                if($objEntity->getNumberOfAddresses()) {
                  //У нас есть адреса!
                  print "<h2>Адреса</h2>";
                  for($x=0; $x < $objEntity->getNumberOfAddresses(); $x++) {
                    println($objEntity->addresses($x)->__toString());
            {      
            {    
                if($objEntity->getNumberOfPhoneNumbers()) {
                  //У нас есть телефоны!
                  print "<h2>Телефоны</h2>";
                  for($x=0; $x < $objEntity->getNumberOfPhoneNumbers(); $x++) {
                    println($objEntity->phonenumbers($x)->__toString());
            {      
            {    
                print "<hr>\n";
            {
            Ответить
            • Если бы в книгах по PHP исправляли бы все ляпы, эта глава была бы единственной. Исправлять ляпы - дело твоё. Они всего лишь демонстрируют ООП в данном конкретном случае. Никто не пишет, что так нужно делать, просто интересно посмотреть как делают другие.
              Ответить
              • Не согласен. В книге все должно быть идеально, за это между прочим дохуя денег берут с покупателя
                Ответить
                • Хорошо, будьте так любезны, укажите в коде выше, где принципиальное концептуальное говно?!
                  Ответить
                  • Да в заголовке же! Теперь вы можете оценить реальную мощь объектноориентирова� �ного подхода.

                    Где в приведенном коде ООП кроме оператора -> ?
                    Ответить
                    • Вся логика инкапсулированна в объекте. По-вашему, ООП, это использование операторов? Короче, это не аргумент.
                      Ответить
                      • Для демонстрации ООП надо было показать как делать классы а не как их дергать в процедурном стиле
                        Ответить
                        • Для демонстрации ООП надо было книжку писать о Питоне
                          Ответить
                        • До этого кода уже всё было показано. Вы что абсолютный пурист ООП что ли?! Мож ещё отдельный класс сделать и инкапсулировать поток выполнения в методе main()? PHP - мультипарадигменный Я.П., так почему бы этим не пользоваться, тем более если удобно. Ну речь не об этом. Я же любезно попросил уточнить: "где принципиальное концептуальное говно?"
                          Ответить
                          • Я вас понял

                            Приведенный код выдернут из контекста видимо? На предыдущих страницах все эти классы описаны, Если так то концептуального говна нет.

                            А для PHP имхо не так уж и не правильно обмазывать его HTMLом. В конце концов он и сделан для формировани HTMLа
                            Ответить
                      • да какая логика-то?

                        Вы почитайте хоть что нить про ооп, про паттерны хотя бы почитайте (гэнг ов фор) и узнаете чем ООП отличается от ковбойского стиля
                        Ответить
                        • Ещё один пурист... Видимо вы меня не слышите. PHP не чисто поддерживает все концепции ООП, он - МУЛЬТИПАРАДИГМЕННЫЙ! Про ООП я читал в теории, не надо тут ЛЯ-ЛЯ.
                          Ответить
                          • >он - МУЛЬТИПАРАДИГМЕННЫЙ!
                            Вот так вброс...
                            Ответить
                          • в таком случае зачем называть процедурный (да еще и очень говеный) код "мощью ООП"?
                            Ответить
              • причем тут ляпы?
                эта глава -- христоматия по тому, как НЕ НАДО писать код
                это скопище антипаттернов и запахов кода
                тут и копипаста сплошная или вшитый в логику гуи и все на свете

                это пзц, а не книга
                Ответить
                • Я и не говорю, что там идеальные примеры программ. Их можно довести до ума. Про GUI в декораторе мне тоже не по душе, честно говоря.
                  Ответить
        • Вы хочете каки?
          Их есть у нас!

          Глава 3:
          public static function getAddressData($addressID) {
                $sql = "SELECT * FROM \"entityaddress\" WHERE \"addressid\" = $addressID";
                $res = pg_query(DataManager::_getConnection(), $sql);
                if(! ($res && pg_num_rows($res))) {
                   die("Невозможно получить данные адреса для $addressID");
          {      
                return pg_fetch_assoc($res);
          {   
             public static function getEmailData($emailID) {
                $sql = "SELECT * FROM \"entityemail\" WHERE \"emailid\" = $emailID";
                $res = pg_query(DataManager::_getConnection(), $sql);
                if(! ($res && pg_num_rows($res))) {
                   die("Невозможно получить данные электронного адреса для $emailID");
          {      
                return pg_fetch_assoc($res);
          {   
             public static function getPhoneNumberData($phoneID) {
                $sql = "SELECT * FROM \"entityphone\" WHERE \"phoneid\" = $phoneID";
                $res = pg_query(DataManager::_getConnection(), $sql);
                if(! ($res && pg_num_rows($res))) {
                   die("Невозможно получить номер телефона для $phoneID");
          {      
                return pg_fetch_assoc($res);
          {


          Знаете, в чем цинизм?
          Эта глава называется "объектный подход в действии"
          Ответить
          • Вы видимо хотели, чтобы они в одной главе указали на "НЕ В РОТ ИБАЦЦО" иерархию классов взаимодействия с БД PostgreSQL. А может и описали ее функциональность в деталях?! Опять же, тогда эта глава была бы единственной в книге. А придраться ко всему можно, даже к Б. Кернигану и Д. Ритчи "The C programming language" и к Питеру Абелю со своим ассемблером
            Ответить
          • Типа не в действии. Способ отображения таблиц в объекты - это тоже способ. Кого-то это наталкивает на какие-то свои идеи, а у кого-то просто их нет, тогда он начинает обсирать чужие. Это безусловно искусство! Копипастить и троллить я смотрю все научились.
            Ответить
            • в этом коде нет ни одного объекта
              зато есть копипаста и sql инъекция

              если Вы когда нить бросите пхп и изучите какой-нить язык программирования -- Вы меня поймете
              Ответить
              • PHP - далеко не первый для меня ЯП. Я всю жизнь (хм..) Java занимаюсь, начинал с С/С++. PHP использую как простое эффективное средство для написания web-приложений ЛЮБОЙ степени сложности. Не было ни дня, что я пожалел об этом.
                Ответить
                • >>простое эффективное средство для написания web-приложений ЛЮБОЙ степени сложности.

                  знаете, в чем разница между говеным и неговеным приложением?

                  неговеное приложение не позиционирует себя как ВЕБ приложение. Потому что неговеный архитектор знает, что веб -- это всего лишь гуи. Никто же не говорит "я консольный программист" или "я свинг программист".

                  Когда человек говорит "веб-приложение", то сразу понятно что у него там HTML вперемешку с логикой, отовсюду образаются к $_GET, нету юнит-тестов и куча копипасты.

                  На сложность приложения это, кстати, никоим образом не влияет. Влияет на хрупкость, но даже очень хрупкое приложение можно поддерживать если не леница активно и бодро копипастить)
                  Ответить
                  • WEB разный бывает, задачи для WEB бывают разными, собственно как и везде. Я бы не стал говорить: "Я типа пишу на JSP, потому что не знаю PHP; поэтому PHP - говно что ли?!" Неговеное application не позиционирует себя как ВЕБ... ?! Вот это новость!
                    Ответить
              • Лять, проебал 70к гет.
                Ответить
    • Сколько ни писали книжки про пых, а все равно только говно выходит.
      Показательно. Товарищи, даже не пытайтесь это исправить.
      Кодомакаки облегчают конкурентную борьбу = )
      Ответить
      • кодомакаки приводят к тому, что неискушенный заказчег с баблом при упоминании ПХП начинает смотреть на вас как на говно.
        Ответить
        • это искушенный заказчег. Которому уже обезьянки сделали "портал" за 60 баксов
          а неискушенному все равно, на чем будет крутиться, главное, что бы это было красиво и эффективно несло золотые яички
          Ответить
          • Искушенный все же знает, что PHP на самом деле мощный и серьезный инструмент. Я наверное имел ввиду заказчика который все же бывает в инете хотя бы на башорге и вконтагтиге
            Ответить
            • > PHP на самом деле мощный и серьезный инструмент
              ЖЖОШ! :-D
              Ответить
            • да
              башорг -- серьезное приложеное
              именно башорг доказывает тот факт, что на php можно писать очень сложные вещи
              Ответить
              • +1 еще и вполне себе хайлоад
                Ответить
                • хайлоад это совсем не та область, где важна красота языка)
                  в каком-то смысле быстрое приложение это антоним красивому приложению
                  Ответить
                  • А при чем тут красота? Вплане красоты PHP один из самых уродливых языков. Следом C++ (ловлю минусы). Самый красивый код выходит на Паскале и SQL (DML).
                    Ответить
                    • при том, что красота нужна для сложной бизнес-логики
                      и не нужна для перформанса

                      именно потому, на пхп нет ни одного приложения с логикой сложнее форума.

                      а хайлоады -- есть
                      Ответить
    • 13 января был в убогом городе Березники, заходил в книжный магазин, полистал книг 10 по PHP, все они примерно одного содержания и все для начального уровня.

      Только 2 книги содержали прилично написанные примеры. И только в одной из двух примеры были рабочие.

      Самое обидное, что цена на литературу такой тематики, в разы больше.
      Ответить
      • мне вот интересно, как вы проверяли примеры на работоспособность, не отходя от полки? = )
        Ответить
        • А он видимо из тех людей, которые в уме исходники компилируют...
          :)
          Ответить
          • Нет там всё гораздо проще, просто нужно внимательно прочитать код сверху вниз, если вы читаете не говнокод, вы сразу заметите нехватки ";", ошибки в регулярных выражениях
            if(preg_match("[A-z]", $abc))...
            и т.д. Просто надо захотеть их найти и всё =)

            Вы же читаете код, перед тем, как проголосовать за говнокод
            Ответить
          • таки интерпретируют
            Ответить
        • гляди, собачка, какая хуйня
          http://tinyurl.com/6x8jzhs
          Ответить
          • сомнительно, что было не лень ручками набирать из книжки
            Ответить
            • у него LAMP в мозк инсталлирован
              Ответить
              • какой LAMP? все православно, FreeBSD+Apache2+modPHP5+modPerl5+MySQL5+ modJk+Tomcat = )
                Ответить
                • фря уже не так православна
                  фря была православна когда небыло линухов с портами и хендбуками

                  но теперь уже и линух вполне себе удобен)
                  Ответить
        • на прошлой работе меня нагнули сдать SCJP
          вот уж где в мозгу-то накомпилировал
          Ответить
      • Так это отличный повод написать стопицотую книжку для чайников и получить от этого ПРОФИТ.
        Дело в том, что если язык лёгкий, а человек стопудово уверен, что он погромист от б-га, он всё равно найдёт, не книжку, так форум.
        Ответить

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