﻿# V3031\. An excessive check can be simplified\. The operator '\|\|' operator is surrounded by opposite expressions 'x' and '\!x'\.

Анализатор обнаружил код, который можно упростить\. Слева и справа от оператора '\|\|' стоят противоположные по смыслу выражения\. Данный код является избыточным, поэтому его можно упростить, сократив количество проверок\.

Пример избыточного кода:

```cpp
if (str == null || (str != null && str == "Unknown"))
```

В выражении "str \!\= null && str \=\= "Unknown"" проверка "str \!\= null" является избыточной, так как перед этим проверятся противоположное ему условие " str \=\= null ", причём эти выражения разделены оператором '\|\|'\. Следовательно, излишнюю проверку в скобках можно опустить, упростив код:

```cpp
if (str == null || str == "Unknown"))
```

Избыточность кода может свидетельствовать о наличии ошибки\. Возможно, что в выражении случайно используется не та переменная\. И корректный код на самом деле должен быть, например, таким:

```cpp
if (cond || (str != null && str == "Unknown"))
```

Иногда условие записано в обратном порядке и на первый взгляд его упрощать нельзя:

```cpp
if ((s != null && s == "Unknown") || s == null)
```

Кажется, что здесь нельзя избавиться ни от проверки \(s\!\=null\), ни от проверки \(s\=\=null\)\. Это не так\. Это выражение, как и случай выше можно упростить:

```cpp
if (s == null || s == "Unknown")
```