Кресты / Говнокод #3312 Ссылка на оригинал

0

  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 hromjo, (Updated )

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

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

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

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

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

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8