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

    +59

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    QByteArray icqMessage::convertToByteArray(const quint8 &d)
    {
    	QByteArray packet;
    	packet[0] = d;
    	return packet;
    }

    Обнаружено в сорцах qutim'а. Про memcpy разработчики, видимо, не слышали, также, как и про метод append() в классе QByteArray.
    А еще не совсем понятно, зачем функции для конвертирования байт-эррэев в цифры и обратно объявлены и реализованы В КАЖДОМ файле, где используются. Про #include файла, в котором один раз можно реализовать все функции, разработчики, наверное, тоже слышали мельком.

    Запостил: RankoR, 23 Февраля 2010

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

    • Ну и передача четырех (или восьми на х64)-байтового указателя вместо однобайтовой переменной - это, конечно, ниипаца оптимизация.
      Честно говоря, покопавшись в коде, я удивился, как оно вообще работает.
      Ответить
      • Покопаясь в произведениях ВАЗ многие тоже удивляются, как оно работает. И ведь ничего, ездят =)
        Ответить
      • к вашему сведению, указатель и байт займут одинаково места на стеке, в данном случае
        правда, указатель придется разыменовывать, но это не беда, ведь любой нормальный компилятор заменит const& на const
        Ответить
        • Компилятор то компилятором, но стиль такой ни к чему хорошему не приводит. Фактически, это отражает образ мышления программиста.
          Ответить
    • А как оно вообще используется? Если что-то типа socket->write(icqMessage::convertToByteArray(nu m)) то почему бы и нет?
      Ответить
      • Потому что можно socket->write(QByteArray ( 1, num))
        Ответить
        • Опс, проглядел. А почему минус поставили?
          Ответить
    • Используется в основном для добавления к уже существующим байт-эррэям.
      Ответить
    • Молодец, возьми с полки пирожок... Там в старом icq плагине и не такие чудеса есть...
      В общем это причина, по которой мы всё нафиг с нуля переписываем после ухода старого лидера...
      Ответить

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