﻿# V7023\. Suspicious use of a variable in similar code fragments\. This may be a typo, and a different variable was intended\.

Анализатор обнаружил два схожих по структуре блока кода, которые идут друг за другом и отличаются одной переменной: в первом блоке кода она встречалась несколько раз, а во втором — всего один\. Вероятно, подобный код был написан с использованием copy\-paste, а переменную забыли заменить\.

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

```cpp
if (x > 0) {
  Do1(x);
  Do2(x); 
}
if (y > 0) {
  Do1(y);
  Do2(x); // <=
}
```

В первом блоке все действия происходят с переменной `x`\. Во втором блоке все действия происходят с переменной `y`, кроме метода `Do2(x)`\. Вероятно, здесь забыли поменять переменную, и корректный вариант должен выглядеть так: 

```cpp
if (x > 0) {
  Do1(x);
  Do2(x); 
}
if (y > 0) {
  Do1(y);
  Do2(y);
}
```

Хорошей практикой, защищающей от такой ошибки, является вынос кода в отдельные функции: 

```cpp
processVariable(x);
processVariable(y); 

function processVariable(value) {
  if (value > 0) {
    Do1(value);
    Do2(value);
  }
}
```