1. C++ / Говнокод #8488

    +1003

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    /c/Qt/4.7.4/src/plugins/bearer/symbian/symbianengine.cpp:1336..1344
    
    // Waits for 2..6 seconds.
    void SymbianEngine::updateConfigurationsAfterRandomTime()
    {
        int iTimeToWait = qMax(1000, (qAbs(qrand()) % 68) * 100);
    #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
        qDebug("QNCM waiting random time: %d ms", iTimeToWait);
    #endif
        QTimer::singleShot(iTimeToWait, this, SLOT(delayedConfigurationUpdate()));
    }

    68 будет в самый раз, да.

    Запостил: overloop, 11 Ноября 2011

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

    • а пачиму ни 42?
      Ответить
    • >QT_BEARERMGMT_SYMBIAN_DEBUG
      >SYMBIAN
      >SYMBIAN
      Ответить
    • все таки не нравится мне куте
      вместо православного и понятного
      timer_.expires_from_now(posix_time::mill isec(time_to_wait));
      timer_.async_wait(bind(&app::on_timer, shared_from_this(), asio::placeholders::error));
      используется статический метод класса QTimer (эм...), задающий время только в миллисекундах, который должен создать на лету объект таймера (где то в глобальном массиве для ивент-лупа?), задать ему хендлер (опять эти скрипты вместо нормального С++) - объект точно не умрёт до того, как у него попытаются вызвать хендлер?
      и судя по хелпу, обрабатывать этот таймер кутэ будет только в том потоке, где живет сам объект
      а чем qMax и qAbs лучше std::max и std::abs? тем, что у них тот же блевотный кутешный горбатый стиль? почему в куте что то начинается с большой Q, а что то - с маленькой? а почему в qrand вообще больших букв нет?
      Ответить
      • Тем, что Qt старше STL в Стандарте.
        Ответить
        • значит надо скрепя сердце вычистить весь этот навоз, сделать deprecated и использовать стандарт, в чем проблема

          "...but again Stepanov and Lee met the challenge and produced a proposal that received final approval at the July 1994 ANSI/ISO committee meeting" - стл уже была в драфте стандарта с 1994 года, а кутэ была официально выпущена в 1996

          откуда у людей вообще берется этот мерзкий верблюжий стиль, стандартной библиотеке Си куча лет, любой нормальный программист на С++ должен был пройти школу С и привить её стиль - большими буквами определяем константы и макросы, функции и переменные - маленькими

          как всегда проблема в паскале, замечательном языке для обучения, он с детства прививает хороший стиль
          Ответить
          • > любой нормальный программист на С++ должен был пройти школу С и привить её стиль
            Не навязывайте стиль, который вам нравится. Мне, например, удобно называть функции с большой буквы и без подчеркиваний (CountMyPonies), а переменные - наоборот (number_of_ponies).
            Ответить
            • тогда вы ошиблись экосистемой
              вам туда, где ваше CountMyPonies не выглядит чужеродным - где TArray, PrOgRaM mAsSiV, Integer, TObject
              не я навязываю стиль, это делает язык
              не казалось странным, почему printf и delete вместо PrintF и Delete?
              Ответить
              • недавно работая с qt начал замечать этот идиотский термин экосистема! Маразм крепчает да? пример с qt преобразование QString -> QByteArray qt4-toAnsi, qt5-toLatin1 зачем?
                Ответить
          • показать все, что скрыто>Си куча лет, любой нормальный программист на С++ должен был пройти школу С и привить её стиль
            хня. школа PHP рулит
            Ответить
          • Вы так говорите, будто стиль именования имеет какое-то значение.

            Не используйте qAbs и qMax, никто не заставляет. Стулья Код зачем ломать?

            И не забывайте, что Qt — это не только для C++.
            Ответить
            • флейм о следующем
              http://doc.qt.nokia.com/latest/qtglobal.html
              qAbs, qMin, но qrand, qgetenv, и даже qt_set_sequence_auto_mnemonic, q_check_ptr, полная каша, и qt, и q, и верблюды, и все маленькими, и с подчеркиваниями, в макросах аналогично - и Q_, и QT_
              и это всего лишь хедер, который included by most other Qt header files.
              это всё наводит на некие мысли
              как и фетишизм префикса q (Q) - в с++ для этого есть неймспейсы
              нелепо писать Qt::Q..., это как если было бы std::stdstring, std::stdvector - масло масляное
              не поленился, посмотрел биндинги
              только в QtRuby избавились от префикса:
              app = Qt::Application.new(ARGV)
              все остальные биндинги существуют в языках, позволяющих делать аналогично, но who cares
              очевидно, библиотека настаивает на том, чтобы делать глобально using namespace Qt;

              ну и чтобы набросить еще - в пятницу мне пожаловались, что парсить xml на кутэ критически медленно, человек всё переделал на libxml
              нашел вот такое сравнение (длина бара - затраченное время)
              http://xmlbench.sourceforge.net/results/benchmark200910/xmlbench200910-Draw_html_3c093df.gif
              кто может прокомментировать?

              сам проект сравнения xml-парсеров желающие могут лицезреть http://xmlbench.sourceforge.net/
              Ответить
              • Ну не было тогда ещё пространств имён. Все публичные библиотеки имели свой префикс (иначе запутались бы со своими list-ами и string-ами).

                Единственное имя на Q в пространстве имён Qt — Qt::QueuedConnection.
                Ответить
                • фанаты могут ставить минусы сколько угодно

                  мне как разработчику кросс-платформенного кода (не гуй) на С++ даже интересно
                  в qt заявляется поддержка асинхронной работы с сетью, через скрипты SLOT (в хелпе не раскрывается через что именно работает асинхронный io, исходники качать пока не буду, ну да ладно). Насколько я понимаю, SLOT будет работать с ивент-лупом в потоке объекта-коллбека и только в нем. В бусте я, когда надо, создаю 8-16-N потоков под это дело, коллбек, срабатывающий на accept, вызовется в одном из них, он кормит сервер свежим объектом connection для нового accept, а сам занимается в своем потоке уже чем хочет (ну как минимум делает async_read), т.е. в другом потоке уже может вызваться новый accept, таким образом я даже не заморачиваюсь балансированием нагрузки и одновременно обслуживаю N задач. Более того, в этих N потоках может работать не только один tcp-server, а и всё остальное, что угодно, равноправно. Я правильно понял, что в qt придется это всё ручками ручками?

                  ну и опять насчет стандарта 99 года - значит qt несовременная библиотека, раз считает неприемлемым почистить конюшни, переводя некоторые вещи в deprecated и предлагая современные и эффективные альтернативы
                  более того, их можно не окончательно удалять, а переводить в блоки #ifdef QT_USE_DEPRECATED_SHIT ... some deprecated shit #endif, тем, кому лениво переписывать старый код (очевидно, написанный тогда же, до 1999 года), и кому зачем то нужно собираться не с соответствующей qt, а современной, не обломаются поставить лишний дефайн в настройках проекта

                  вот что меня может заставить брать qt для масштабного использования в рабочих проектах? особенно для тех, в которых нет GUI (90% оных). Скриптовое кодирование поверх C++? Коммерческая лицензия? Факт того, что ничего из QT не обрело жизни в новом стандарте С++?

                  и да, Qt::QueuedConnection отсутствует в хелпе
                  http://doc.qt.nokia.com/latest/classes.html#q
                  Ответить
                  • Вы пытаетесь забивать гвозди микроскопом и жалуетесь на микроскоп. Или вас кто-то заставляет использовать Qt?

                    О регулярном переписывании проекта масштаба Qt, на который завязано тысячи продуктов многомиллионной стоимости заикнитесь как-нибудь своему начальству. Кстати, из C++ тоже никто в своём уме не собирается вычищать всё неудачное наследие C 70-го года.

                    Qt::QueuedConnection — не класс.
                    Ответить
                    • я и не говорю о переписывании
                      я говорю о предоставлении единообразного стиля всем новоприбывающим в использование Qt
                      кто тянул за яйца коммиттеров, выпустивших в свет вышеописанную кашу в QtGlobal, где код ревижен? или раз условно бесплатно, то жрите что есть
                      Ответить
                      • Нет, вы предлагаете как раз кашу — чтобы побороть некоторый исторический разнобой в стилях именования ввести ещё один непохожий стиль именования. Да, так оно обычно и бывает с реформаторами.
                        Ответить
                        • qrand -> qRand
                          qgetenv -> qGetEnv
                          q_check_ptr -> qCheckPtr

                          где уж тут непохожий стиль именования?
                          Ответить
                          • > qCheckPtr
                            кучек птр
                            сразу представил себе кучки указателей
                            Ответить
                          • Кто-то вроде выступал против верблюжьего стиля, общего префикса и замены стандартных функций?
                            Ответить
                            • ну, естесственно, в идеале надо Qt::QApplication, Qt::qrand, Qt::qDoSomething и Qt::q_check_ptr переделать в qt::application, qt::rand, qt::do_something, qt::check_ptr (что бы это ни было), но тут уже даже могила не исправит, и пытаться нечего
                              но даже горбатый стиль - тоже стиль, если он будет системным - хер с ним
                              я же обратил внимание на кашу из стилей в основном библиотечном хедере
                              я даже не специально в него полез, я полез посмотреть что за qMax и qAbs
                              и в оправдание услышал "так сложилось исторически, старичку 20 лет", что, несомненно, добавляет плюсов к библиотеке
                              Ответить
                              • Не нужно исправлять то, чего нет. Это ваши фантазии.
                                Ответить
    • показать все, что скрытоvanished
      Ответить

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