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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    bool ChatHandler::HandleNpcYellCommand(const char* args)
    {      
    
    if (!*args)
    return false;
    ...
    }

    Запостил: hromjo, 25 Мая 2010

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

    • в чём какули? в указателях не особо шарю
      Ответить
    • Это кусочек кода из эмуляторов северного ПО World of Warcraft. WoWD или его форков (Mangos, Ascent и т.д.), угадал? :) Они состоят из говнокода чуть более, чем наполовину. Но это неинтересный пример.
      Ответить
    • Нормальная проверка строки на пустоту. В чём говнокод?
      Ответить
      • Что первый символ строки не нулевой? Обычно пустые строки сами нулевые и надо (!args), о чём выше и сказали.
        Ответить
        • Мне кажется, что тут нормально. Например, строка под контролем (сами ее и делаем) и NULL быть не может.
          Ответить
    • eto ne govnokod
      Ответить
    • Автора в тред - пусть расшаривает нам нипрасвещённым, в чём же прикрыто то самое
      Ответить
    • Частенько бывает, что надо и указатель проверить на NULL, и строку на пустоту. Указатель, видимо, надо было проверить раньше.
      Ответить
    • Да хули -- опечатка
      Ответить
      • показать все, что скрытоГовнокод в том, что после проверки на пустоту, функция возвращает false но не завершается сразу, проверяя следущие варианты, лишний раз загружая систему.
        Ответить
        • о_О ты че курил???
          Ответить
        • Есть ли жизнь после return'а ?
          Ответить
          • В некоторых компиляторах все же есть.
            Ответить
            • Подари грибочки, то сынок. Ыыы.)))
              Ответить
              • вот тебе бабушка, c--, кури.
                Ответить
                • mangos на с++ пишут =))
                  Ответить
                  • Он на 75% на Си. Консольный вывод и ведение логов написаны на чистом Си... В нутрях классов. Но это ещё ничего. Особо радует там собственная классовая обёртка Сишной библиотеки MySQL. :)
                    Ответить
    • во-первых - разыменование нуля - вполне возможно при таком подходе и можем упасть.
      во-вторых делать какие-то выводы из первого символа буфера который мы передали на вход конечно можно, но с точки зрения проектирования и дизайна - это не просто капец. это убицца апстену.
      Ответить
      • !p || !*p конечно полный пипец для ansi-строки. Так пишут только полные подонки, которым место в крематории посмертные вирши на бейсике ваять.
        Ответить
      • нахрен на нуль постоянно проверять? под линуксом я забиваю хуй, просто ставлю хэнлдер на сегфолт,чтобы писать бектрейс. и всё нахуй. подставка недопустимого значения в функцию это скорее компайл-тайм-бага, лучше приложение закрыть нахуй.
        Ответить
        • Правильно. Вообще нехер проверять! Это неправильный дизайн и проектирование!
          Гуру пишут так: void main () { try { GlavniyTsikl(); } catch (...) { cout << "Гдета кревые пораметры, идите в жопу!" << endl; }; }

          Кстати, почти реальный код.
          Ответить
          • всё правильно! защита против говнокодеров.
            Ответить
            • Тогда другой правильный кодер SEH в подмогу позвал.
              Ответить
          • а исключенияб нах и не нужны, кроме как чтобы в конце концов написать "о-ляля, сломался код". чо мучаться, правильно всё закрывтаь, лучше сразу ебануться в месте ебанения.
            Ответить
        • Webkill, будьте добры, уйдите с ресурса.
          Ответить
    • От туда же:

      bool ChatHandler::HandleRecallGoCommand(const char* args, WorldSession *m_session)
      {
      if( args == NULL )
      return false;

      if( !*args )
      return false;
      Ответить

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