Анализатор обнаружил конструкцию, которую потенциально можно оптимизировать. В одном выражении дважды вычисляется длина одной и той же строки. Для вычисления длины используются такие функции, как strlen, lstrlen, _mbslen и так далее. Если данное выражение вычисляется много раз или строки имеют большую длину, то данный участок кода рационально оптимизировать.
Для оптимизации можно предварительно вычислить длину строки и поместить её во временную переменную.
Рассмотрим пример:
if ((strlen(directory) > 0) &&
(directory[strlen(directory)-1] != '\\'))
Скорее всего, данный код обрабатывает только одну строку и его оптимизировать не надо. Но если код вызывается очень часто, то его следует переписать. Улучшенный вариант кода:
size_t directoryLen = strlen(directory);
if ((directoryLen > 0) && (directory[directoryLen-1] != '\\'))
Иногда предупреждение V804 помогает выявить гораздо более критические ошибки. Рассмотрим пример:
if (strlen(str_1) > 4 && strlen(str_1) > 8)
Здесь используется некорректное имя переменной. Код должен выглядеть следующим образом:
if (strlen(str_1) > 4 && strlen(str_2) > 8)