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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    enet_uint32 flags = 0;
    
    if (flags & CPacket::RELIABLE)
        flags |=ENET_PACKET_FLAG_RELIABLE;
    
    return enet_packet_create(data, (writer.Tell() + 7) / 8, flags);

    Братишка сделал одинаковые названия локальной переменной и поля в классе.

    Запостил: tuxick, 03 Марта 2019

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

    • Неделя отладки
      Ответить
      • откройте для себя статические онолизаторы типа PVS, да тот же cLion или R++
        Ответить
    • Именно поэтому я за m_flags.
      Ответить
      • А я поэтому за "PHP".
        Ответить
        • И то верно, в «PHP» без $this-> (или без self:: для статических полей) не сработает, поэтому там не перекрывается.
          Ответить
      • или за this
        Ответить
      • > m_flags

        Хоть венгерка -- это фу, но в данном случае ИМХО единственный оправданый юзкейс. Аштрисет от такого:

        struct Foo {
          explicit Foo(int bar, int baz) : bar{bar}, baz{baz} {}
        
          int bar, baz;
        };
        Ответить
        • С какой-то версии правильное поведение гарантировано, не?
          Ответить
          • Поведение-то гарантировано, но выглядит всё равно отвратительно. А ещё можно словить лютый багор и не заметить:
            struct Foo {
              explicit Foo(int bar, int baz_refactored) : bar{bar}, baz{baz} {}
            
              int bar, baz;
            };

            Студия, ЕМНИП, на такое даже ворнинга не выдавала.
            Ответить
            • > baz(baz)
              Ну всё ок же. Явно указал, что надо оставить в переменной то, что там было. Чтобы всякие анализаторы не доёбывали.

              З.Ы. А для класса позовётся конструктор копирования из самого себя?
              Ответить
              • Позовётся: https://ideone.com/yuuKf4

                Вот это багор!
                Ответить
        • венгерка не имеет отношения к говнопрефиксу m_
          Ответить
    • вот по этому я за IDE
      Ответить
      • Вглядываться в тонкости подсветки? Нафиг. Да и не всегда код видишь через ide.
        Ответить
        • да не. на самом деле это не так сложно и сразу бросается в глаза.
          idea сразу будет подчеркивать тебе локальную переменную и говорить что она скрывает поле. кроме того. он сразу сделает подстветку if (...) заметно темной и предложит выбросить его т.к. услове всегда false и код под ним не выполняется никогда. так что не все так плохо.
          Ответить
          • Прям при дефолтных настройках? А то gcc даже на -Wall -Wextra почему-то не считает это проблемой... Надо -Wshadow явно врубать.
            Ответить
          • З.Ы. Ну и надеяться на ворнинги от IDE глупо, имхо. Если конпелятор/анализатор не ломают билд, то постепенно весь проект засрётся ворнингами. И всем будет на них похуй, многие тупо отключат их в IDE чтобы не мешало. А вимоёбы вообще насрут и не заметят.

            Настройки ворнингов должны быть консистентны как между билдом и IDE так и между всеми разрабами в команде. Иначе это всё хуйня и не работает.
            Ответить
            • > многие тупо отключат их в IDE
              Меня вообще раздражает в IDE когда что то подсвечивается кроме синтаксиса, или когда автоматически выскакивает что то типа списка вореантов автодополнения и мешает нафигации стрклочками, или когда автоматически ставятся закрывающие скобки/кавычки, потому я их обычно вырубаю. Я, конечно, не против всех этих фич, но когда они выскакивают во время редактирования это бесит.
              Ответить
              • сразу видно что ты ничего сложнее арканоида не писал
                Ответить
        • тонкости?

          там будет жирный ворнинг на пол строки
          Ответить
          • Х.з., я его никогда не видел. Ибо пишу m_flags, g_flags и не парюсь.
            Ответить
            • То есть у тебя весь код вымазан "m_"-ми? Этож пиздец наверное.
              Ответить
              • у меня обмазан
                mPetux, mTutukh

                раньше был вообще this

                зы: у меня друзья жабоёбы выдумали нотацию потешную

                myInstanceField
                ourClassStaticField

                такие смешные,
                Ответить
                • This не спасает от хуйни с name(name), которую выше Elvenfighter описал.
                  Ответить
                  • крестопроблемы

                    у нас в жабоёбстве нельзя писать

                    iq(61)

                    надо явно myIq = 61
                    Ответить
    • Вечер удивительных историй.
      Ответить

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