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

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    switch (impl->used_hash)
                {
                case false:
                    break;
                case true :
                    ..........
            }

    Разбирал сырцы одного "гения" и нашел это...

    Запостил: LuCiFer, 13 Мая 2014

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

    • И что? Это самое показательное, что было в коде этого "гения"?
      Ответить
      • там словами не передать... а сюда постить, я боюсь, что хостинг у владельцев упадет от объёмов и идиотизма кода. Это оттуда же http://govnokod.ru/9238
        Я если еще найду, что-то, что можно передать в разумных пределах - я здесь опубликую. Но такие кошмары, как классы созданные с помощью дефайнов - т.е. наборы методов где-то объявлены в с помощью
        #define something void do_smth_1(){} \
        void do_smth_2(){} \
        void do_smth_3(){}

        а затем много классов используют этот something выкладывать как-то даже страшно.
        Ответить
        • Есть еще говнопрактика дефайнов с ретурнами внутри как кусков функций.
          Ответить
          • Есть говно и покруче - макросы с использованием локальных переменных:
            #define ARR_ACS(a) (arr[MOD_L(a)]) //access to arr
            Взято отсюда: http://govnokod.ru/15967
            Ответить
    • Толсто.
      Ответить
    • Вероятно гений начитался на форумах, что switch работает быстрее пачки if-ов и начал везде "оптимизировать" код.
      Ответить
      • Это где такое пишут. Я сколько помню пишут наоборот что пачка if побыстрей будет.
        Ответить
        • > пачка if побыстрей будет
          В C/C++/Java? Акстись. Не может такого быть.
          Ответить
          • Я не стал бы говорить "невозможно"
            Смотря как писан свич, смотря как писаны ифы, смотря какой комилер.
            Может тупой компилятор не удалит это
            > case false:
            > break;
            И будет лишний переход в сравнении с простым:
            if (impl->used_hash){
            ....
            }
            Ответить
        • Толсто.
          Ответить
    • Делал так, но у меня в кейсы были вложены ещё свищи и так на несколько уровней.
      Когда один -- пожалуй, грех. Но может семантически быть яснее такой код, ложиться в какую-то концепцию.
      Ответить
    • А где default?
      Ответить
      • А третье дано? Хотя извратится можно - там аж целых 7 бит свободных.
        Ответить
        • Ну мы же не видим тип impl->used_hash... Вдруг там вообще int?
          Ответить
          • там boolean
            Ответить
          • Вот кстати навеяно - решил извратится
            http://ideone.com/osUYfn
            Результаты весьма странные.
            Не ну первый тернарник я еще понимаю, но свитч и прямое сравнение с единицой (true) - это странно.
            Ответить
            • Хреновый какой-то тест... Ни 0 ни 1 не попали в выборку.

              Вот так лучше: http://ideone.com/5i40Ej
              Ответить
              • А не смущает что сравнение с единицей ячейки где не еденица возвращает true. Да и скачек на фолс если в ячейке что-то кроме нуля?
                Ответить
                • Мой пример лучше тем, что на нем рассмотрены все важные случаи, а не тупо 5 рандомных.

                  > А не смущает
                  Нет, не смущает. Ибо запихивание чего-то в бул через жопу - это UB. А поведение сишки/крестов при UB'ах смущать не может по определению.

                  3.9.1:6 Using a bool value in ways described by this International Standard as ‘‘undefined,’’ such as by examining the value of an uninitialized automatic variable, might cause it to behave as if is neither true nor false.
                  Ответить
    • ░░░░░░░░░░░░░░░░▄▄▄▄▄▄▄▄▄▄▄░░░░░░░░░░░░░
      ░░░░░░░░░▄▄▄▄█▀▀▀░░░░░░▄▄█████▄▄░░░░░░░░
      ░░░░░░▄█████░░░░░░░░░░▀███████████▄░░░░░
      ░░░░▄█▀▀███▄▄██▄░░▄▄▀███████████████▄░░░
      ░░▄███▄█▄█████▀▀█████████████████████▄░░
      ░▄███▄██████▀░░░░▀▀████████████████████░
      ▄█████████▀░░█▄▄▄▄░░▀▀▀▀░░░▀▀▀▀████████▄
      ████████▀░▄██▀▀████▀█░░░░▄▄████░░▀██████
      ████████░░░░░░░░░░░▀▀░░░░█░░░░░░░░▀▀████
      ████████░██▄░░░░░░░░░░░░░░█░░░░░▄▄░░████
      ████████░▀█▄██▄▄▄░░▀░▀░░░░▀░░░░▄█░░▄███░
      ████████░░▀███▄▄██▀▀▀▄▄▄▄▄▄▄▄▀▀░█░░████░
      ▀███████░░░░▀█▀▀█████▄█▄▄▄▄▄█████░░███▀░
      ░▀███████▄░░░░▀▀▄▄▄░░▀▀▀▀▀▀▀█▀▀▀█░▄███░░
      ░░░██████░▀▄░░░░░▄█▀▀▀█▄▄▄▄▄▄▀▀▀▄░████▄░
      ░░░▀██████░░▀▀▄▄░░░▀▀▀▀▄▄▄▄▄▄▄▄▀░░████▀░
      ░░░░██████▄░░░░░▀▀▄▄▄░░░░░░░░░░░░█▀███▄░
      ░░░░▀███▀██░░░░░░░░░░▀▀▀▄▄▄▄▄▄▄█▀░░▀░░▀░
      ░░░░░█▀▀░▀█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
      Ответить
      • ☑ Выпилить ботов (список)

        P.S. Ты таки вынуждаешь меня довести скрипт до ума, спасибо за мотивацию ;)
        Ответить
        • Пожалуйста ;) Вот вам еще, для стимула:
          ``````````````¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶```````````````````
          ```````````¶¶¶¶¶¶``````¶`¶¶¶¶¶¶¶¶¶¶```````````````
          ````````¶¶¶¶¶```¶¶¶`````````````¶¶¶¶¶¶¶¶¶¶¶```````
          ``````¶¶¶````¶¶¶¶¶¶¶¶¶¶````````¶¶¶```¶¶¶¶¶¶¶¶`````
          ````¶¶¶``¶¶¶¶¶¶¶¶``¶¶``¶¶¶¶¶¶¶¶`````¶¶¶¶¶¶¶¶¶¶¶```
          ```¶¶¶`¶¶¶¶¶`¶¶¶¶¶¶¶¶¶¶``````````¶¶¶¶```¶¶¶¶¶`````
          ``¶¶¶¶¶¶¶¶``¶¶````````¶¶````````¶¶¶````¶¶¶¶`¶¶````
          `¶¶````````¶¶``````````¶¶``````¶¶```````````¶¶````
          `¶¶````````¶``¶¶¶¶`````¶¶``````¶¶``````````¶¶¶````
          `¶```````¶¶¶`¶¶¶¶¶`````¶¶```````¶¶```````¶¶¶`¶¶```
          ¶¶`````¶¶¶¶¶¶¶¶¶``````¶¶`````````¶¶¶¶¶¶¶¶¶¶¶¶¶¶```
          ¶¶````````¶``¶¶¶¶¶¶¶¶¶¶````````````¶¶¶``````¶¶¶```
          ¶¶``````````````¶¶¶¶¶``````````¶¶¶¶¶``¶¶¶¶¶¶``¶¶¶`
          ¶```````````````````````¶¶¶¶¶¶¶¶`¶¶``¶¶¶```¶¶``¶¶`
          ¶`````````````````````¶¶¶`¶`````¶¶¶`¶¶¶¶¶¶¶¶¶¶`¶¶`
          ¶`````````````````````¶¶¶¶¶¶¶¶``¶¶`¶¶¶¶¶¶¶¶¶¶¶`¶¶`
          ¶```````````````````````````````¶¶`¶¶````````¶`¶¶`
          ¶¶``````````````````````````````¶¶`¶¶```````¶¶`¶¶`
          ¶¶`¶¶```````````````````````````¶¶`¶¶```````¶¶¶¶``
          `¶``¶``¶``¶``````````````````````¶`¶¶``````¶¶`¶¶``
          `¶¶``¶`¶```¶`````````````````````¶`¶¶``````¶``¶```
          ``¶¶``¶¶¶```¶¶`````¶¶¶```````````¶`¶¶`````¶¶``¶¶``
          ``¶¶```¶¶````¶¶``````¶¶¶¶¶``````¶¶`¶¶``````¶``¶¶``
          ```¶¶``¶¶¶````¶````````¶¶¶¶¶````¶¶`¶¶¶¶¶¶``¶¶``¶``
          ```¶¶```¶¶¶```¶``````````¶¶¶```¶¶`¶¶````¶¶``¶``¶``
          ````¶¶```¶¶¶``¶¶`````¶¶¶```¶¶``¶¶`¶¶``````¶¶¶``¶``
          `````¶¶```¶¶¶```¶`````¶¶¶¶¶````¶``¶¶¶¶¶¶¶¶¶¶¶``¶``
          ``````¶¶```¶¶¶````¶¶``````¶¶¶``¶``¶¶`¶¶¶`¶`¶¶``¶``
          ```````¶¶```¶¶``¶```¶````````¶¶¶``¶¶¶``¶¶¶¶¶``¶¶``
          ````````¶¶¶```¶¶`¶¶¶``````````¶¶¶``¶¶¶¶¶¶¶¶``¶¶```
          ``````````¶¶¶`````¶¶¶¶¶````````¶¶¶````¶¶¶```¶¶¶```
          ```````````¶¶¶¶¶`````¶¶¶¶¶¶¶¶¶¶`¶¶¶¶¶````¶¶¶¶`````
          ``````````````¶¶¶¶¶¶```````¶¶¶¶¶```¶¶¶¶¶¶¶¶```````
          ``````````````````¶¶¶¶¶¶¶````````¶¶¶¶¶¶```````````
          ```````````````````````¶¶¶¶¶¶¶¶¶¶¶¶```````````````
          Ответить
          • Готово (в версии 0.0.16).

            Если на коммент бота нет ответов людей, то он выпиливается полностью.
            Если есть - просто скрывается.
            Ответить
            • У меня тоже готово: если человек - злодей, его сообщения выпиливаютя со всех страниц; если нет - тоже выпиливаются, чтобы другим неповдно было.
              Ответить
            • http://rghost.ru/55137076.view
              Ограничения ширины и так хватает. Что хорошо, при этом не теряется контекст и сообщения от неупоротых гостей.
              Вот если ещё добавить код, который убирает форматирование и большой красный текст сделает маленьким чёрным, то можно удалять только повторяющиеся сообщения.
              Ответить
            • идея интересная, но смысл?
              Ответить

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