﻿# V3228\. It is possible that an assigned variable should be used in the next condition\. Consider checking for misprints\.

Анализатор обнаружил потенциальную ошибку: вместо одной переменной была проверена другая, имеющая схожее имя\.

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



```cpp
bool UserProcessing()
{
  ....
  var user1 = FindUser(id1);

  if (user1 == null)
    return false;
  ....
  var user2 = FindUser(id2);

  if (user1 == null)
    return false;
  ....
}
```

В данном примере инициализируются две переменные со схожими именами: `user1` и `user2`\. После инициализации переменных значение каждой из них должно проверяться на равенство с `null`\. Однако из\-за опечатки в условии второго `if` переменная `user2` не будет проверена\.

Исправленный вариант:

```cpp
bool UserProcessing()
{
  ....
  var user1 = FindUser(id1);

  if (user1 == null)
    return false;
  ....
  var user2 = FindUser(id2);

  if (user2 == null)
    return false;
  ....
}
```

Рассмотрим еще один случай:

```cpp
private readonly int _value;
....
public CustomType(int value)
{
  ....
  _value = value < 0 ? 0 : value;

  if (value == 0) { .... }
  ....
}
```

Полю `_value` присваивается значение параметра `value`, ограниченное положительными значениями\. Далее вместо валидного значения поля на равенство с `0` проверяется параметр, который все также может иметь отрицательное значение\.

Исправленный вариант:

```cpp
private readonly int _value;
....
public CustomType(int value)
{
  ....
  _value = value < 0 ? 0 : value;

  if (_value == 0) { .... }
  ....
}
```