# V6028. Identical expression to the left and to the right of compound assignment.

Анализатор обнаружил одинаковые подвыражения в левой и правой части составного оператора присваивания (compound assignment operator). Возможно эта операция содержит ошибку, не имеет смысла, либо может быть упрощена.

Рассмотрим пример. Пусть у нас имеется выражение следующего вида:

    x += x + 5;

Возможно программист хотел просто прибавить к переменной 'x' значение 5. Тогда корректный код может выглядеть так:

    x = x + 5;

Либо же программист хотел прибавить 5, но случайно добавил лишнюю переменную 'x' в выражение. Тогда корректный код может выглядеть так:

    x += 5;

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

    x = x * 2 + 5;

Рассмотрим следующий пример:

    x += x;

Данная операция эквивалентна операции умножения на два. Более понятное выражение будет иметь следующий вид:

    x *= 2;

Рассмотрим еще одно выражение:

    y += top - y;

Мы пытаемся прибавить переменной 'y' разницу между переменной 'top' и переменной 'y'. Давайте разложим данное выражение:

    y = y + top – y;

Данное выражение можно упростить, так как переменная 'y' вычитается сама из себя, что является бессмысленным. Тогда простой и корректный код будет выглядеть так:

    y = top;

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6028.