# V815. Decreased performance. Consider replacing the expression 'AA' with 'BB'.

Анализатор обнаружил конструкцию, которую потенциально можно оптимизировать. В классах строк, реализованы операторы, которые позволяют более эффективно очистить строку или проверить что строка является пустой.

Рассмотрим пример:

    bool f(const std::string &s)
    {
      if (s == "")
        return false;
      ....
    }

Этот код можно немного улучшить. Объект класса 'std::string' знает длину строки, которую он хранит. Но не известно с какой строкой его хотят сравнить. Поэтому, запускается цикл для сравнения строк. Намного проще, просто проверить, что длина строки равна 0. Для этого следует использовать функцию 'empty()':

    if (s.empty())
      return false;

Аналогичная ситуация. Требуется очистить строку. Следующий код можно немного улучшить:

    wstring str;
    ...
    str = L"";

Улучшенный вариант:

    wstring str;
    ...
    str.clear();

Примечание. Описанные рекомендации спорны. Выигрыш от такой оптимизации крайне мал, но при этом возрастает риск допустить опечатку и использовать не ту функцию. Причина - неудачное именование функций. Например, в классе 'std::string' функция 'empty()' проверяет, что строка пустая. В классе 'CString', функция 'Empty()' очищает строку. Одно название, но разные действия. Поэтому, для улучшения читаемости кода вполне допустимо использовать конструкции: = "", == "", != "".

Выбор за вами. Если диагностика V815 вам не нравится, вы можете отключить её в настройках.