Перейти к содержанию

Совпадающие выражения в вычислениях

Части выражений, находящиеся справа и слева от операторов *, не должны быть одинаковыми.

Подобный код снижает читаемость, а также может приводить к трудновыявляемым проблемам. Т.к. при необходимости внесения одинаковых изменений в обе части, может возникнуть опечатка.

Подозрительный код

Перем2 = Перем1 * Перем1;

Правильный код

Перем2 = pow(Перем1, 2);

См. также - Неверное и бессмысленное арифметическое выражение - Правило Совпадающие/одинаковые тела методов - Правило Дублирование одинаковых/похожих блоков кода - Правило Одинаковые условия в последовательности вида "Если (....) ИначеЕсли (....) ИначеЕсли (....)". - Правило Сравнение выражения с самим собой - Правило Одинаковый код во взаимоисключаемых ветках ветвления кода - Правило Одинаковые выражения (вызов методов) в разных ветках/блоках кода - Правило Одинаковые части условий в разных условиях блока "Если ИначеЕсли" - V501. There are identical sub-expressions to the left and to the right of the 'foo' operator - Статья на хабре от PVS-Studio