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

    +69

    1. 1
    2. 2
    #define BYTEMAX 0xFF 
    #define BYTEOVERFLOW (BYTEMAX+1)

    C++ вокруг. Интересует насколько это вменяемая практика?

    Запостил: LispGovno, 26 Ноября 2013

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

    • Может быть тебе стоит немного отвлечься? Почитать например художественную литературу какую-нибудь.
      Ответить
    • > C++
      > #define BYTEMAX
      > вменяемая практика?
      Сам-то как думаешь?
      Ответить
      • Ну код чужой, мне кажется нет. Но подводных камней вроде тоже нет?
        Ответить
        • мне непонятно, зачем это вообще нужно.

          1. литерал 0xff должен иметь тип знакового целого, байты обычно беззнаковые. Сравнивать их не айс.
          Далее, 0xff + 1 будет 0x100, что не будет равняться "переполненному" байту 0x0, т.к. типы при сравнении расширяются.
          2. За максимальными значениями можно лезть в <limits> или my_uint(-1).

          Как используется BYTEOVERFLOW?
          Ответить
          • char str[BYTEOVERFLOW];
            ...
            unsigned int Divider = ...;
            ... = (BYTE) (Divider % BYTEOVERFLOW);
            ...
            unsigned short CRC[BYTEOVERFLOW];
            ...
            Arrays<unsigned, BYTEOVERFLOW>::Array _time_intexec;
            ...
            byte edindvect[BYTEOVERFLOW]; // индексный вектор для поиска строки

            Поиск нашел вот это и ещё несколько похожих.
            Ответить
            • typedef uint8_t byte;
              const byte BYTE_MAX = 0xff;
              const uint16_t BYTE_VALUES = 256u;
              > (BYTE) (Divider % BYTEOVERFLOW)
              byte(Divider)
              Ответить
              • Поясните, за что минусы. Мне очень интересно, где именно я не прав, т.к. тема довольно сложная.
                Ответить
            • Мне кажется, что тут заложен глубинный смысл, который нам не понять.
              Ответить
              • это раскрутка ресурса byteoverflow.ru, конкурента stackoverflow.com eais.rkn.gov.ru
                Ответить
              • Мне лень разбираться. Код старый и менять ничего не буду, чтобы не сломалось, но поверьте мне, вы не одиноки в попытках понять глубинный смысл сути бытия.

                Как мне кажется BYTEOVERFLOW в трех строчках из пяти взят с потолка.
                Ответить
                • А! Вот оно что. Я понял чего он взял BYTEOVERFLOW в качестве границы массивов. Для итерирования в качестве индекса используется переменная типа BYTE или char. Проверять свою догадку мне лень. В код не полезу.
                  Ответить
                  • Не выдержал, слазил. Догадка не верна. WORD и int.

                    В цикле проверка for(...;i<BYTEOVERFLOW;...)
                    Ответить
                  • херово, если так
                    допустим, тебе надо пройти все [0..255] = 256 элементов
                    это значит, тебе нужен счетчик [0..256] - т.е., как минимум, short, чтобы писать цикл, как мужик, с одним единым телом
                    for (short_type i = 0; i < 256; ++i) 
                        iteration(i);
                    иначе, придется писать как членодевка
                    iteration(0);
                    for (byte_type i = 0; i < 255; ++i)
                        iteration(i+1);
                    Ответить
                    • ололо боты лютуют
                      у кого так подгорело?
                      Ответить
                      • У сотрудников eais.rkn.gov.ru вестимо... Но еще недостаточно разгорелось для внесения в реестр ;)
                        Ответить
                    • > иначе, придется писать как членодевка
                      Царский вариант:
                      byte_type i = 0;
                      do {
                          iteration(i);
                      } while (++i != 0);
                      Ответить
                      • показать все, что скрыто
                        
                             |==========================================| 
                             |    ТАРАСБЕР ПРЕДЛАГАЕТ УСЛУГИ  ДЛЯ ПАРНЕЙ    |
                             |==========================================|
                            
                        Миньеты с проглотом, взаимная дрочка, возможен анал в группе
                        Обращаться: [email protected]
                        Ответить
                      • или так
                        ибо царь знает наверняка с какими типами он работает и ему не ссыкотно отдавать код младшим на донашивание

                        ps: глупые боты, все их посты потрутся одной командой тупо по упоминанию [email protected]
                        тащемта, ладно уж страйко, где хотя бы люр?
                        увяз в пучине киевских любовных утех?
                        Ответить
                        • показать все, что скрыто
                          
                               |===================================== =| 
                               | ТАРАСБЕР ПРЕДЛАГАЕТ УСЛУГИ  ДЛЯ ПАРНЕЙ|
                               |==================================== ==|
                              
                          Миньеты с проглотом, взаимная дрочка, возможен анал в группе
                          Обращаться: [email protected]
                          Ответить
                        • показать все, что скрытоА позвольте вам, батенька, взять на заметку, что в пучине нельзя увязнуть - это не болото.
                          Ответить
                          • Толковый словарь Ожегова:
                            ПУЧИНА
                            1. Водоворот, а также провал в болоте.
                            ...
                            Ответить
                            • 1.0 в вашу пользу. Но в таком случае получается, что увязнуть все равно не получится. Скорее уж утонуть.
                              Ответить
                              • Разные болота бывают. И пучина может быть не глубокой. Вот едешь значит ты на джипе и одним колесом в пучину. А дальше и не тонешь и не едешь. Увяз.
                                Ответить
                              • В болоте нельзя утонуть, т.к. грязь тяжелее воды. Можно увязнуть и сдохнуть.
                                Ответить
                                • В болоте можно утонуть, т.к. судя по всему, это неньютоновская жидкость (грязь и ил, разболтанные в воде)
                                  Ответить
                                  • И плотность всех составляющих меньше средней плотности человека (которая чуть меньше воды).
                                    Ответить
                                    • Какой ты умный.
                                      Ответить
                                      • Да тут у многих по три технических образования, тысячи прочитанных книг и опыт программирования под тридцать лет. А на практике только распилы и откаты. Всё тлен.
                                        Ответить
                                        • 1023, я думал, пилят по блату?
                                          Ответить
                                          • Пилят может и по блату, может даже и не умники из интернетов, но всё равно здесь все умные, а там - суровая реальность и заводы стоят.
                                            И, смеясь над автором говнокода, автор осознаёт, что каждый день он пишет то же самое.
                                            Ответить
                                            • А начали про болото...

                                              Алсо я смеюсь не над r=f(); return r; вместо return f();, а над тем, что человек вообще не допер что к чему, вроде примера, где некто писал на Yii как на обычном php, или над мозголомающими примерами из языков вроде goto вовнуть цикла.
                                              Ответить
      • показать все, что скрыто
        
             |===================================== =| 
             | ТАРАСБЕР ПРЕДЛАГАЕТ УСЛУГИ  ДЛЯ ПАРНЕЙ|
             |==================================== ==|
            
        Миньеты с проглотом, взаимная дрочка, возможен анал в группе
        Обращаться: [email protected]
        Ответить
    • Зачем отдельная константа BYTEOVERFLOW, когда при необходимости можно просто прибавить к BYTEMAX единицу - мне непонятно.
      К тому же, раз уж речь идет о крестах, почему не std::numeric_limits? Хоть я к крестам довольно скептически отношусь, numeric_limits - классная штука.
      Ответить
      • > numeric_limits
        Я так понимаю, с ними есть одна проблема. std::numeric_limits<T>::max() - статическая функция, следовательно, в c++03 нельзя использовать её результат для задания размеров массивов. В c++11 вроде догадались сделать её constexpr.
        Ответить
        • показать все, что скрыто[color=red][code][b]
          |======================================= ===|
          | ТАРАСБЕР ПРЕДЛАГАЕТ УСЛУГИ ДЛЯ ПАРНЕЙ |
          |======================================= ===|
          Миньеты с проглотом, взаимная дрочка, возможен анал в группе

          Обращаться: [email protected]
          Ответить
          • показать все, что скрыто[color=red][code]
            |======================================= ===|
            | ТАРАСБЕР ПРЕДЛАГАЕТ УСЛУГИ ДЛЯ ПАРНЕЙ |
            |======================================= ===|

            Миньеты с проглотом, взаимная дрочка, возможен анал в группе

            Обращаться: [email protected]
            Ответить
            • показать все, что скрыто[code]
              |======================================= ===|
              | ТАРАСБЕР ПРЕДЛАГАЕТ УСЛУГИ ДЛЯ ПАРНЕЙ |
              |======================================= ===|
              [code]
              Миньеты с проглотом, взаимная дрочка, возможен анал в группе
              Ответить
    • показать все, что скрыто
      
           |===================================== =| 
           | ТАРАСБЕР ПРЕДЛАГАЕТ УСЛУГИ  ДЛЯ ПАРНЕЙ|
           |==================================== ==|
          
      Миньеты с проглотом, взаимная дрочка, возможен анал в группе
      Обращаться: [email protected]
      Ответить

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