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

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

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

```cpp
if (!Name || (Name && Name[0] == 0))
```

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

```cpp
if (!Name || Name[0] == 0)
```

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

```cpp
if (!Foo || (Name && Name[0] == 0))
```

Анализатор выдаёт предупреждения не только на конструкции вида 'x' и '\!x', но и на прочие противоположные по смыслу выражения, например:

```cpp
if (a > 5 || (a <= 5 && b))
```