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

    +162

    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
    15. 15
    function image($id, $idname, $width, $height, $save, $jpg) {
            
            ...........................................................................................
            //throw new Exception('Типо неизвестный формат');
            echo 'Типо неизвестный формат изображения';
        
    }
    
    
    
    function video($id, $idname, $save, $wmv) {
             .......................................................................................
            //throw new Exception('Типо неизвестный формат');
            echo "Типо неизвестный формат !" . $id['name'];
        }

    От автора "Ghgh", Новый остросюжетный код "Типо ошибка"

    Запостил: хуита, 27 Ноября 2013

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

    • Автор "Ghgh" как бы намекает нам, что преимущество такого подхода заключается в том, что очень легко переключаться с исключений на отладочный вывод и обратно. Для этого достаточно раскомментировать все строки throw и закомментировать строки echo под ними. ;)

      P.S. $id['name'] тоже доставило ;) Обычно $id это все-таки число, или guid, ну или на крайний случай какая-нибудь уникальная строка...
      Ответить
      • > Для этого достаточно раскомментировать все строки throw и закомментировать строки echo под ними. ;)
        А может быть, автор действительно использует что-то вида
        s/([\r\n])(.*?)(throw.*)([\r\n]+)(.*?)(echo.*)([\r\n])/\1\5\3\4\2\6/
        Ответить
      • А эксепты - это не отладочный вывод?
        Ответить
        • А что они, простите, выводят? :)

          Если из-за исключения что-то вывелось, то либо его поймали и вывели, либо его упустили, и его вывел перед смертью рантайм... В любом случае исключение искажает поток управления, поэтому на отладочный вывод ну никак не тянет ;)

          P.S. Ну и да, я нагнал про отладочный вывод. Тут все-таки выхлоп этого echo уйдет в браузер, и его увидит юзер. Так что не отладочный, а просто вывод.
          Ответить
          • Ну в нормальных языках они выводят стектрейс, незнаю насчет браузера.
            Ответить
            • > Ну в нормальных языках они выводят стектрейс
              Да схуяли? И в каких же случаях исключения сами по себе выводят стектрейс? Ну-ка откройте мне эту тайну :)

              Мне, дураку, всегда казалось, что либо кто-то ловит исключение, и показывает его сообщение и стектрейс, либо его ловит рантайм, и перед остановкой выводит его сам ;) Само по себе исключение ничего не выводит, пока его не попросят.
              Ответить
              • Сами исключения конечно ничего не выводят, их выводит среда выполнения, если на него нету обработчика.
                Ответить
                • Ну вот с этим согласен. Ну в любом случае отладочный вывод (например в лог или на stderr) исключениями не заменить ;) Это все-таки разные сущности для разных целей.
                  Ответить
                  • Но менять исключения на print в нормальных языках смысла нет - они и так высирают параметр.
                    Ответить
                    • > они и так высирают параметр
                      Ага, и меняют при этом поток управления ;)

                      > менять исключения на print в нормальных языках смысла нет
                      Ну мне может табличку сарказм вешать уже, или зеленым шрифтом все писать? Неужели можно воспринять мою фразу из первого коммента ("Для этого достаточно раскомментировать все строки throw и закомментировать строки echo под ними") на полном серьезе? Ни в каком языке нет смысла менять throw на print и наоборот, это была шутка, не более того.
                      Ответить
                      • Что подход в исходнике неидеальный я и так понял. Это тебя чем-то не устроили исключения.
                        Ответить
                        • Только тем, что у исключений своя область применения, а у отладочного вывода своя. И поэтому они не взаимозаменяемы ;)

                          А к исключениям претензий нет. Они даже в пыхе вполне вменяемые.
                          Ответить
                          • Но в данном случае сообщения тупо дублируют исключения.
                            Ответить
                            • Нет. Исключение прервет функцию. Сообщение - нет. Семантика разная же.
                              Ответить
                              • показать все, что скрыто>>Но в данном случае сообщения тупо дублируют исключения,
                                >>Исключение прервет функцию, сообщение - нет

                                Унылый. троллинг
                                Ответить
                              • тогда бы уж нотис кидать.

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

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