1. Java / Говнокод #13603

    +116

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    /**
     * just to see logs...
     * @param context
     */
    public void drawPalletes(PYGraphics context){
        //log.info(elevatorSimelement.getName()+" -draw Palettes, palettes number is: "+elevatorSimelement.getPalletes().size());
        super.drawPalletes(context);
    }

    Запостил: someone, 13 Августа 2013

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

    • Где говно?
      Ответить
      • Человек перегружает метод родителя только для того, чтобы этот метод вызвать. Когда-то там было логирование.

        Кстати, нормальные люди пишут @Override или я не прав?
        Ответить
        • > Кстати, нормальные люди пишут @Override или я не прав?
          Ну да, стоит писать. Какая-никакая страховка от опечаток в имени/списке параметров. К сожалению, емнип, в виде ворнинга, не ошибки.
          Ответить
          • >емнип, в виде ворнинга, не ошибки.
            У меня выставлено ошибка. Не раз выручало.
            Ответить
            • А как там у javac рулятся уровни ошибок?
              Ответить
              • >рулятся уровни ошибок?
                Знакомым по gcc образом -Werror
                Конкретно @Override хз - надо доку читать. В ide выставлено. IDE же дописывает @Override.
                А вот люди, наоборот, борются с этим:
                http://stackoverflow.com/questions/2335655/why-is-javac-failing-on-override-annotation
                Ответить
              • Кому-то он нужен? Обычно IDE конпелирует.
                Ответить
                • > Обычно IDE конпелирует
                  Э... мне кажется, или-таки всё же обычно компилирует компилятор?
                  Ответить
                  • Ну он видимо имеет в виду, что сборку чаще всего запускают из IDE, поэтому в ней и надо включать эти опции.
                    Ответить
                    • Как это ни странно, в жабомире сборку чаще всего запускают антом или мавеном (может из IDE). Но настраиваются-то они этими самыми javac параметрами в конфиге.
                      Примерно как (авто)мейк в сишкомире.

                      Из среды запускают тестовый код, всякие скриптики, лабы там ну и всё такое.

                      Это и к вопросу:
                      >Кому-то он нужен?
                      Ответить
                  • Кажется. В яве компилятор - какая-то жавоидная приблуда, которую через апи может запустить или компилятор, или IDE. Eclipse вот вообще работает на одной JRE без компилятора.
                    Ответить
                    • > без компилятора
                      Данунахуй ;) У него просто свой инкрементальный компилер в комплекте есть. Его даже из командной строки можно дергать, если зачем-то возникнет такое желание.

                      > какая-то жавоидная приблуда, которую через апи может запустить или компилятор или IDE
                      Почему бы не назвать эту поебеньлибу компилятором, а то, что ты назвал "компилятором" - интерфейсом командной строки для компилятора? :)
                      Ответить
                      • Ну где-то так. То есть, компилятор - это не javac, а жавоидная либа, которую он дергает и которую можно дергать без его помощи.
                        Ответить
                      • А не, я ошибся. Эклипс действительно имеет свой собственный конпелятор, что, кстати, говорит, что для этого много мозгов не надо. Из плюсов - эклипс имеет доступ к AST, что обьясняет охуенную работу в статике (вплоть до перетаскивания методов мышкой).
                        Ответить
                        • > для этого много мозгов не надо
                          Да, жабий компилятор очень прост, по сравнению с другими - мало того, что язык сам по себе простой, так еще и оптимизаций никаких он делать не умеет, сваливая их на jit. Да и кодогенератор у него только под jvm, не надо заморачиваться с ассемблерами под разные платформы и т.п.
                          Ответить
                          • Вся оптимизация взваливается на программиста, что тоже в чем-то не плохо - учит думать. Ну по крайней мере того, кому это надо
                            Ответить
                            • >Вся оптимизация взваливается на программиста
                              С хулей?
                              Низкоуровневой оптимизации там просто нету. Другое дело, что она или не нужна, или ломает весь контроль над статикой. Думать она требует ну никак не больше, чем на сишке.
                              Ответить
                            • > Вся оптимизация взваливается на программиста
                              Алгоритмическая то? :) Ну она и на сишке не помешает, если честно. На одном низкоуровневом байтоёбстве далеко не уедешь. А царские числодробилки на яве и не пишут.

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

                                >И для одноразовых утилит в стиле запустился-поработал секунду-умер
                                Для этого подходит только нативный код, все остальное очень сильно тормозит при запуске. Хотя! XBMC стартует плагины на питоне с нуля каждый раз, затупов не заметно.

                                Зачем коду прогрев-то? Там какие-то ленивые свойства?
                                Ответить
                                • > Зачем коду прогрев-то? Там какие-то ленивые свойства?
                                  Гугли hotspot. Жаборантайм проводит профайлинг и компиляет часто выполняемый байткод в нативный код. То, что выполняется редко, быстрее интерпретировать как байткод, чем генерировать машинные инструкции. У жабомашины один из лучших JIT-компиляторов.
                                  Ответить
                                  • А сисярпик умеет кешировать нативный образ на машине :) Кто быстрее?

                                    Хотспот я слышал же, но не больше.
                                    Ответить
                                  • про -server даже я приметил, на шару дает ускорение в одном месте в 20-30 раз, только нужно часок на прогрев
                                    Ответить
                                    • Оло ло, а можно как-то полный JIT форсировать, типа -server-server-server или -sssssserver!!! ?
                                      Ответить
                                      • просто в другом месте ускорения не заметно, т.к. там вовсе не жаба тормозит (и более того, подозреваю, что сисярпик как раз) - все, что относится на моей стороне, на холодном старте занимает 40мс, после прогрева - 1мс, затем xml уходит на сторону, и ответ на него я получаю после 2000мс независимо от прогретости
                                        Ответить
                              • Ну я как бы и не говорил что в сишке не нужна) Я имел в виду, что если бы на программиста не взваливалась оптимизация, то программисты бы отупели. Всекие программирования мышью, и т.д.. Короче я запутался, помогите мне)

                                >А царские числодробилки на яве и не пишут.

                                Ну так область применения не та. java все таки создан для удобства написания, а не для сверхбыстрой работы. + у java порог вхождения ниже гораздо, что способствует привлечению молодых быдлокодеров^W умов
                                Ответить
                    • >Eclipse вот вообще работает на одной JRE без компилятора

                      на святой воде и магии вуду)

                      >В яве компилятор - какая-то жавоидная приблуда, которую через апи может запустить или компилятор

                      хороший пример рекурсии
                      Ответить
                      • компилятор - какая-то жавоидная приблуда, которую через апи может запустить или javac, или IDE.
                        Починил.
                        Ответить
                    • >В яве компилятор - какая-то жавоидная приблуда, которую через апи может запустить или компилятор, или IDE.
                      >Eclipse вот вообще работает на одной JRE без компилятора.

                      facepalm².gif
                      Ответить
    • AOP
      Ответить
      • Ради одной отладки возиться с AspectJ или со спринговыми проксями... Не, оно того не стоит.
        Ответить
        • Нет, это ОП код результат АОП.
          Ответить
          • А зачем?
            Ответить
            • ХЗ. Как-то год назад все прямо на демонстрации с транспарантами ходили за АОП, и так чет поутихло все. Собственно, все примеры использования АОП всегда сводились к добавлению логгиривания в готовые функции. Поэтому уменя теперь устойчивая ассоциация: логи в функциях = АОП.
              Ответить
              • Ну еще, возможно, проверка параметров или проверка прав доступа. Мой друг в своем питонопроекте как раз для этих целей юзает декораторы. А декораторы вполне можно назвать AOP.
                Ответить
              • Еще как вариант - транзакционная семантика. Тоже видел несложную реализацию на питоньих декораторах.

                Перед стартом функции, помеченной таким декоратором, запускается транзакция. При успешном выходе - коммит, при исключении - роллбек.

                Тоже вполне так AOP, т.к. добавили новое поведение в готовую функцию.

                P.S. Но, имхо, все проблемы AOP'а упираются в состояние. Либо оно глобальное (тот же лог) тогда все просто, но не так уж кошерно. Либо его вообще нет, и тогда никакой интересный аспект не замутить. Либо приходится как-то вытягивать данные у того, к чему аспект прикручивается - а это тоже некошерная зависимость.
                Ответить
                • У нас в одном проекте change tracking на АОП был запилен, но практически никто не разбирался, как оно работает.
                  Ответить
    • Отлаживался человек, забыл выпилить... Бывает.
      Ответить
    • super - аналог шарпавского base? ну тогда это самое хитрое перекрытие метода которое я видел
      Ответить
      • Но там же был лог ;)
        Ответить
        • зачем в такой функции лог? ) "а вот тут у нас вызывается метод у класса - потомка который вызывает метод родителя и ничего не делает" бред же
          Ответить
          • > зачем в такой функции лог?
            Ну вот хотел автор узнать, вызывается метод в конкретном классе или нет. В родительский запихать не получится, т.к. он будет на всех потомков срать в логи. Поэтому он оверрайднул метод, и добавил в него лог ;)

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

              достаточно знаний ооп.

              >А может быть там что-то еще планировалось помимо лога и вызова родительского метода... просто автор об этом забыл.

              заработался, бедняжка)
              Ответить
    • Надо было не комментировать, а понизить до DEBUG, по-видимому.
      Ответить

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