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

    +2

    1. 1
    if ( LIKELY( _mode == normal ))

    _mode задается один раз в начале программы по конфигурационному файлу.

    Запостил: govnokoderatata, 25 Февраля 2016

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

    • Для полноты картины:
      1) условие используется в цикле;
      2) у _mode всего 2 различных значения
      Ответить
      • Ну и из данного кода видно, что _mode скорее всего будет "normal", по этому компилятор сгенерирует код с минимумов прыжков для такого варианта событий.

        В где говно?
        Ответить
        • Мысли следующие:
          1) как было сказано, _mode задается конфигом. Зачем так портить жизнь другому значению параметра конфига, отличного от normal? Что за дискриминация?
          2) раз уж пошла такая отимизационная пьянка, что мешает запилить два различных цикла - для одного значения параметра конфига, и для другого. И вынести это условие из цикла наверх?
          3) да и вообще, начать запиливать likely и при этом на каждой итерации цикла сравнивать одно и то же с одним и тем же (_mode никогда не меняется) выглядит как-то иронично, что ли...
          Ответить
          • Видимо автору было лень сопровождать два одинаковых куска кода, отличающейся только одной строчкой. Однако он знал, что в >99.99% случаев _mode == normal. Тогда почему бы не поставить likely?
            Ответить
            • Как он может об этом знать? В конфиг выносят параметры как раз для того, чтобы подстроиться к переменчивой среде без пересборки кода. Если сегодня normal чаще всего используется, кто сказал, что завтра его вообще не перестанут использовать, а будут использовать другое значение параметра?
              Ответить
              • Полагаю, кроме normal, там ещё бывает а-ля «debug». И автору насрать тормозит или нет в debug-режиме, но не хочется, чтобы этот if вообще чувствовался в normal-режиме. Но это лишь догадка. Однако, пока это не опровергнуто, не вижу причин называть код говнокодом.
                Ответить
    • показать все, что скрытоНикогда не понимал этот блять С++, винапи в 100 раз проще
      Ответить
      • эм ... где здесь С++, ponchic ?
        Ответить
      • признайся
        ты это просто так написал? от балды?
        ты ведь ни в С++ ни в винапи ничерта не поним
        Ответить
        • В винапи чуть-чуть понимаю
          Ответить
          • а на каком ЯП под winapi пишешь?
            Ответить
            • C++
              Ответить
              • Си-с-классами или с++?
                Ответить
                • >Си-с-классами
                  Что за зверь?
                  Ответить
                  • Кресты в руках сишника, не осилившего RAII.
                    Ответить
                    • Напомни, на крестах дрова/ядро уже можно писать?
                      Ответить
                      • Идеологически - нет. Технически - да.

                        З.Ы. Точно не помню, но вроде в макоси дрова на крестах.
                        Ответить
                        • да, на сабсете C++
                          точнее в XNU
                          а еще точнее в mach:)

                          IOKit
                          Ответить
                      • Да, на крестах:
                        C++ was chosen for several reasons. The C++ compiler is mature and the language provides support for system programming. In addition, there is already a large community of Macintosh (and BSD) developers with C++ experience.

                        The restricted subset disallows certain features of C++, including
                        - Exceptions
                        - Multiple inheritance
                        - Templates
                        - Runtime type information (RTTI)
                        Ответить
                        • > Multiple inheritance
                          > Runtime type information (RTTI)
                          Не нужно.
                          > Exceptions
                          Нужно в исключительных ситуациях ЕВПОЧЯ.
                          Ответить
                          • Не пойму только за что шаблоны запретили.
                            Ответить
                            • Долго компилируются, имеют свойство распидорашиваться в мегабайты.
                              Хз. Шаблоны - это ж один из китов на которых стоят кресты.
                              Ответить
                              • Ну это если их абузить и всякие MPL хуярить. А если простенький контейнер или смартпоинтер - ничё там не распидорашивает...
                                Ответить
                                • >всякие MPL хуярить
                                  Лол, я как раз хотел сказать "чтоб буст в дрова не тащили".
                                  Да понятно что штука полезная. А разосрать и препроцессором можно.
                                  Ответить
                                  • имхо это ограничение на экспорт
                                    Ответить
                                    • > ограничение на экспорт
                                      Ну можно же шаблоны юзать только для удобства реализации, а в интерфейсы не выставлять...
                                      Ответить
                      • https://en.wikipedia.org/wiki/I/O_Kit
                        Ответить
                • C++
                  Ответить

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