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

    +71

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int buttonState = R.id.power_widget_button_indic; // Зачем-то объявили лишнюю переменную, ссылающуюся на константу
    ImageView indic = (ImageView) mView.findViewById(R.id.power_widget_button_indic); // Но здесь используем константу, а не новую, более короткую переменную!
    if ((Settings.System.getInt(context.getContentResolver(), Settings.System.EXPANDED_HIDE_INDICATOR, 0)) == 1) {
    	indic.setVisibility(8); // Для установки видимости существуют константы View.VISIBLE, View.INVISIBLE и View.GONE, а циферка 8 вообще ни о чем мне не говорит
    } else {
    	indic.setVisibility(0); // И еще раз
    }

    Это - кусок кода из Android 4, вернее, из CyanogenMod 9. Репозиторий frameworks_base, файл packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerButton.java. И такого говнокода в исходниках Android - полно :(

    Запостил: RankoR, 13 Мая 2012

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

    • Ну так гуглу нужно было быстро создать новую ривалюциённую ОС, а Индии как раз нужны были инвестиции в рынок услуг.
      Ответить
      • Но как и свойственно говнокоду, работает он хорошо.
        Ответить
    • А ведроид нужен разве?
      Ответить
      • вы просто не умеете их готовить
        Ответить
        • Жалею, что оракл, походу, слили, пидорасы. Ничего нормально довести до конца не могут.
          Ой, и не говорите таки.
          Ответить
          • так чем там всё кончилось?
            Ответить
            • Признали нарушения авторских прав, но о миллиардах компенсаций и выкидывании далвика на мороз уже речи не идёт. И это как-то печально.
              Ответить
            • Они поженились.
              Ответить
        • Всё, что связано с андроидом - это глючный красноглазый пиздец.
          Ответить
          • А какая альтернатива? В Эппле все еще хуже, симбиан не нужен, остается вендофон?
            Ответить
            • meego же
              Ответить
              • Тогда зачем компромисы? Сразу GNU/Hurd какой-нибудь.
                Ответить
              • Недаром от него отказались все, кроме коммьюнити.
                Ответить
            • А что в эпле хуже? Единственное, что плохо - закрытая FS
              Ответить
          • Ну, не всё. Сегментация рынка, ява-машина и идеология интерфейса.
            У меня, собсна, претензия ровно одна. Благодаря андроиду узкоглазые вылезли на рынок электроники "от ста баксов", например, медиаплееров или сотовых телефонов. Там, где раньше было "вставьте сима", сейчас стоит ведроид, собранный нашими жёлтыми братьями из говна и палочек. И в нём даже запустится недомаркет.
            Ответить
            • >Благодаря андроиду узкоглазые вылезли на рынок электроники "от ста баксов"

              А что в этом плохого? Конкуренция на рынке - это хорошо.
              Ответить
              • Не всегда и не везде. Но это вбивает гвозди в гроб фирм, которые делали не-андроиды. Соответственно, это снижает видовое разнообразие. Не думаю, что мне нужна в моём будущем монополия гугола ещё и на телефоны. Нет особого желания выбирать между маздаем, яблоком и роботом. Есть и другие причины, но не будем о грустном.
                Ответить
            • Меня бесит жаба-машина, из-за которой нельзя писать на чём удобнее, а надо непременно писать на жабе.
              Ответить
              • Под жаба машину можно писать на чём угодно, был бы компилятор в жаба байт код.
                Ответить
                • На чем угодно не получится - есть вещи, которые Ява-машина не умеет (например tail call elimination). Не то, чтобы прям без этого никак, но для некоторых языков - совсем никак. Да и язык созданный в рассчете на определенные низкоуровневые команды будет лучше работать, чем адаптация - так что в итоге не особо чего получится.
                  Ответить
                  • Ну некоторые языки это умеют сами, без расчёта на поддержку со стороны VM, например Nemerle с расчетом на портирование на JVM умеет делать tail call optimization самостоятельно.
                    Ответить
                    • Clojure и Scala тоже умеют, но с ограничениями, наложенными jvm: оптимизировать можно только случай, когда функция вызывает сама себя (в Clojure для этого есть ключевое слово recur). Взаимнорекурсивные вызовы не могут быть оптимизированы, на этот случай в Clojure есть функция trampoline, в Scala вроде ручками это нужно писать.
                      Ответить
                      • Немерле для взаиморекурсивных функций по моим данным автоматическое tail call optimization тоже пока не освоила. :(
                        Ответить
                    • Тогда им прийдется жертвовать возможностью получать стек-трейсы.
                      Ответить
                      • Почему? Эта оптимизация отключается ключиками компиляции.
                        Ответить
                        • Ну так будет или то или другое, но не вместе.
                          Ответить
                          • >Ну так будет или то или другое, но не вместе.
                            Вы так говорите, как будто я сказал, что будет все вместе.
                            Ответить
                        • Если ее отключить, то есть вероятность пожертвовать результатом работы. Причем если весь код основан на рекурсии - то совсем уж ненулевая.
                          Ответить
                          • Ну или стандартная отладка трейса или серьёзное выполнение кода с возможной записью трейса в журнал. Вы же понимаете, что всё в жизни всегда компромисс. Не бывает полностью оптимальных со всех сторон технологий. Жить стало бы не интересно.
                            Ответить
                • Можно ли писать под жаба машину на языке, который дёргает функции API и использует арифметику указателей?
                  Ответить
                  • только JNI (Java Native Interface), только хардкор?
                    Ответить
                    • Понимаешь, мне противны песочные языки. Может быть я не прав, но мне это видится так:
                      Если мне понадобится какая-то страная поебень, то даже в долбанных крестах я смогу выкрутиться и изобрести костыль, который даст мне эту поебень, а в песочном языке уже костыль не сделаешь, в песочном языке надо подключить модуль Ааа.ббб.ввв.ггг и применить класс ддд.еее, который это делает. Так вот, я ненавижу учить что-либо наизусть, у меня мозг вообще так устроен, память пипец какая дырявая, чтобы что-то запомнить, надо либо 100 раз повторить, либо врубиться.
                      Так вот в коренных языках достаточно запомнить небольшой набор того, что делать можно, а чего нельзя, а потом уже писать блеать код и не париться, всё, чего не хватает, можно вывести логически. А в песочном языке с логикой хуй что сделаешь, надо тупо зубрить, какой класс что делает.
                      Да, винапи говно в этом плане тоже отстой.
                      Ответить
                      • А документацию читать пробовал? Зубрить 100500 классов точно не нужно
                        Ответить
                        • Меня бесит необходимость что-то читать, когда можно вывести логически.
                          Коренные языки хороши тем, что в них есть на чёрный день возможность сделать что-то хотя бы через жопу, если не получается нормально. Это как последнее прибежище.
                          Ответить
                          • Кто-нибудь переведите.
                            Ответить
                            • Я тебе уже всё раскрыл. На коренном языке можно сделать ВСЁ (пусть и через задницу), если выучил небольшой набор правил. На песочном надо зубрить (или гуглить) намного больше.
                              Ответить
                              • Я-таки не понимаю, что такое ВСЁ. Сделать #define private public?
                                Ответить
                                • Подозреваю, что Тарас имеет в виду прямое обращение к устройству или к видеопамяти
                                  Ответить
                                • Чтобы было понятнее: у меня есть привычка рисовать графику софтрендером.
                                  Ответить
                                  • И рисовать с помощью memcpy? Тогда понимаю...
                                    Ответить
                                    • BitBlt.
                                      Джависты не знают системные функции для вывода изображения?
                                      Понимаешь, чтобы рисовать руками, надо выучить только этот BitBlt. Чтобы рисовать библиотекой, надо выучить пол-библиотеки.
                                      Ответить
                                      • Я не джавист, но и Gdi32.dll ниразу не пользовался. И винду уже года полтора не видел.
                                        Ответить
                                      • >Чтобы рисовать библиотекой, надо выучить пол-библиотеки.
                                        Батхерт ниасилятора детектед.
                                        Ответить
                      • У всего есть свои плюсы. Не все же любят дрочить низкоуровневое.
                        Если посмотреть с другой стороны, как показывает практика, итоговая реализация не-нативных приложений полно вбирает в себя недостатки, типа тормознутости и общей ужоснаховости, при этом из достоинств - кроссплатформенность (которая, кстати, нивелируется, и всё благодаря обилию безымянных поделок дядюшек Лю и тому, что производители все кто во что горазд; итог - рыхлая платформа, где непонятно, какое будет железо, разрешение, экран и всё в том же духе) и, наверное, всё. Теоретически, ещё не должно быть вирусов, но можно в новостях почитать про очередное приложение из маркета, которое ворует деньги.
                        Как-то так, да.
                        Ответить
                        • Понимаешь, ты вроде бы прав - я со своим подходом "есть лень разбираться в либе, то навелосипедю" застрял на уровне младшего студенческого возраста, но в то же время я не могу (даже осознавая свою непрогрессивность) перестать испытывать дискомфорт при попытке написать что-либо на песочном языке.
                          Ну я как бы не доказываю, что жаба - отстой, я доказываю только то, что мне она очень неприятна, это чисто мои тараканы и всё такое.
                          Ответить
                          • Я никогда не работал над промышленным кодописанием, потому мне сложно сказать, за что так любит джаву индустрия. Наверное, какая-то причина для этого есть.
                            Ответить
                            • рабочие места для повышения особо смышленых индусов из колл-центров?
                              Ответить
                            • Там нельзя лёгким движением руки испортить кучу - это очень здорово. Ну и куча fail-fast проверок
                              Ответить
                              • >Там нельзя лёгким движением руки испортить кучу
                                Тоже мне достоинство... Такое есть только в древних динозаврах типа ассемблер\С++ и больше нигде.

                                >Ну и куча fail-fast проверок
                                Тормозное нужное только во время отладки. Так что лишь минус.
                                Ответить
                        • >можно в новостях почитать про очередное приложение из маркета, которое ворует деньги

                          И там же пишут, что прежде чем что-то будет сделано пользовтель должен дать разрешение.
                          Ответить
                          • Мало кто вчитывается в эти разрешения. Это же как лицензионное соглашение на десяток страниц прокрутить и акцептнуть.
                            Ответить
                            • Ну тут поможет только удаление api для отправки смсок и прочего.
                              Ответить
                          • Говорят, что некоторые блокеры показывают лицензионное соглашение, которое гласит "я согласен заблокировать свой рабочий стол сроком на тридцать дней". И кто-то с ним даже соглашается. Но это не повод говорить, что блокеров не существует и они не опасны.
                            Ответить
                            • Блокеры существуют, но они не опасны. Чего не скажешь об отправлялках платных смс.
                              Ответить
                              • Сейчас наивных всё меньше и меньше, но до сих пор находятся те, кто с удовольствием заплатит за разблокировку.
                                Моё изначальное утверждение неверно, ибо смс-сендеры ≠ вирусы, но лежит где-то в близкой плоскости. Я думаю, что платформа не даст стопроцентной гарантии, какой бы песочной она не была. Злоумышленники есть, дыры в платформе - тоже.
                                Ответить
                      • Тарас в чём-то прав. Я люблю использовать библиотеки, особенно хорошо спроектированные. Однако при использовании даже самого хорошего фреймворка возникают потребности, не предвиденные его авторами. Абстракции начинают подтекать. И тут возникают костыли, смотреть на которые противно, но жить без которых не получается.
                        Но с фреймворком обычно всё же лучше, чем без него.
                        Ответить
              • Небольшой секрет, ни одна мобильная платформа (выкидыши вроде Meego не рассматриваются, ибо интересны ровно 1.5 человекам) не позволяет писать "на чем удобнее". Всякие монодроиды - это костыли, которые хз зачем нужны, потому что Android SDK великолепен.
                Ответить
                • >Android SDK

                  Да там даже у String нету метода isEmpty!
                  Ответить
                  • LOLWUT?
                    java.lang.String
                    <...>
                    isEmpty()
                    Returns true if the length of this string is 0.
                    Ответить
                    • Уже добавили... Since: API Level 9
                      Ответить
                      • А то, что ниже 9 уровня уже и не актуально. 2.2 не так уж много осталось.
                        Ответить
                        • Ещё мне что-то в gui не понравилось, не помню уже что, но видно, что работают :-)
                          Ответить
                      • Я, кстати, не могу сейчас вспомнить, когда последний раз этот метод использовал. В текущих проектах точно нет, грепал.
                        Ответить
                  • Не нужен. В js ведь нету.
                    У олдовых жавистов вошло в привычку писать (s. length==0), ибо до 1.6 не было.
                    Ответить
                • У миго концепция правильная, но в нокии сидят упоротые дебилы. На этот счёт есть латинская поговорка - "кого боги хотят наказать, того они лишают разума".
                  Ответить
                • Android SDK уёбищен. Нет, чтобы сразу подсунуть текстовый файл компилятору и получить готовую рабочую программу, нет, надо ещё вместе с ней тащить гору всякого говна, манифестов и прочей поебени, которую ещё надо вручную заполнять всякой хуетой, не имеющей отношение к программному коду, и не дай бог хоть в одной букве ошибёшься или нечаянно в начало добавишь пустую строку этой иначе эту хуйня либо не скомпилируется, либо без единой ошибки кокомпилятора вылетит при запуске.
                  И не дай бог поставить эклипс в програм файлс.
                  Кстати, где в Android NDK <iostream>?
                  Ответить
                  • >Кстати, где в Android NDK <iostream>?

                    А что на андроиде нужна даже особая плюсовая либа?
                    Ответить
                    • Как можно писать на крестах без iostream?
                      Ответить
                      • Я имею ввиду можно взять стороннюю реализацию, ежели що.
                        Ответить
                        • Ежели що, в нормальных системах такой хуйнёй, как скачивание иострима сбоку, заниматься не надо.
                          Ответить
            • Сейчас аж жиром смоет.
              Ответить

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