Вебинар: Go-Go-Gadg...Error? Смотрим, как ошибаются Go разработчики! - 26.08
Анализатор обнаружил два схожих по структуре блока кода, которые идут друг за другом и отличаются одной переменной: в первом блоке кода она встречалась несколько раз, а во втором — всего один. Вероятно, подобный код был написан с использованием copy-paste, а переменную забыли заменить.
Рассмотрим пример:
if (x > 0) {
Do1(x);
Do2(x);
}
if (y > 0) {
Do1(y);
Do2(x); // <=
}
В первом блоке все действия происходят с переменной x. Во втором блоке все действия происходят с переменной y, кроме метода Do2(x). Вероятно, здесь забыли поменять переменную, и корректный вариант должен выглядеть так:
if (x > 0) {
Do1(x);
Do2(x);
}
if (y > 0) {
Do1(y);
Do2(y);
}
Хорошей практикой, защищающей от такой ошибки, является вынос кода в отдельные функции:
processVariable(x);
processVariable(y);
function processVariable(value) {
if (value > 0) {
Do1(value);
Do2(value);
}
}
Диагностическое правило классифицируется как:
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: