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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
bool XIsEmptyString( LPCTSTR str )
{
	CString s(str);
	s.TrimLeft();
	s.TrimRight();

	return ( s.IsEmpty() || s == _T("") );
}

Кажется разработчика настиг приступ паранойи.

Взято из библиотека XMLite

Запостил: German_1984 German_1984, (Updated )

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

  • Тот же результат, без лишних действий.

    bool XIsEmptyString( LPCTSTR str )
    {
    CString s(str);
    s.TrimRight();

    return s.IsEmpty();
    }
    Ответить
    • bool XIsEmptyString(LPCTSTR str) {
          while (*str) {
              if (!_istspace(*str))
                  return false;
              ++str;
          }
          return true;
      }
      Тот же результат, без лишних действий. _istspace() пришлось поюзать из-за виндоблядского TCHAR'а.
      Ответить
      • Достаточно одного Trim'а, т.к. если строка из одних пробелов, то любой из двух ее полностью съест.
        А TrimRight работает быстрее чем TrimLeft, т.к. не нужно перемещать данные в памяти
        Ответить
        • >> А куда делся TrimLeft()?
          > Достаточно одного Trim'а, т.к. если строка из одних пробелов, то любой из двух ее полностью съест.
          Ага, я затупил, одного трима достаточно.
          Ответить
      • Неплохое говнецо получилось. Название функции намекает, что проверяется грубо говоря str[0]==0. В оригинальном ГК довольно наглядно видно что на самом деле строка должна быть или пустой или из вайтспейсов. В твоем же коде это нифига не наглядно. Надо или писать коментарий или переименовать функцию в XIsEmptyOrWhitespaceString Привет энтерпрайзным названиям названиям методов в Java.
        Ответить
        • > Неплохое говнецо получилось.
          Какая задача - такое и говнецо. Раз подсунули сишную null terminated строку в параметрах, значит будем с ней работать по-сишному. Любому сишнику вполне понятен этот код.

          А проблема с неоднозначностью Empty решается документацией.
          Ответить
          • Да я ж не отрицаю, что понятен. Просто надо сделать небольшое умственное усилие. А был бы коментарий - можно было бы не думать. Профит же.
            Ответить
            • Да чтение исходников чужой либы это уже крайний случай, имхо. Если найдётся дока, в которой написано, что XIsEmptyString "считает строку пустой, если она длиной 0 или состоит из пробельных символов (список символов прилагается)" - хер я полезу читать код...
              Ответить
          • > Любому сишнику вполне понятен этот код.
            Это да. Я хоть и не матёрый сишник, но проход по символам мне кажется более очевидным, чем какой-то trim. Или просто в первом коде не было подсветки.
            Ответить
          • >будем с ней работать по-сишному
            Пихать строку в класс и вызывать на нём методы очень по-сишному.
            Ответить
                • А я со своим скриптом уже отвык от уровней комментов... Когда с планшетки или телефона захожу - настолько непривычно видеть это дерево.
                  Ответить
                  • Здрравия желаю! мВдам выписан штраф в размере 2000 (двух тысяч) руйблей за неуважение к власти в форме отсутствия положительной реакции на патриотическую новость. Оплатить штраф вы можете в любом отделении «Сбербанка» с вочсьми утра до девяти утра поь чётным четвергам.
                    Ответить

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

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

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


    8