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

Бесполезные скобки в выражениях

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

Например:

Если ((((Количество * Цена) - 1) * 100) <> 0) Тогда    
    ЧтоТоСделать();
КонецЕсли;

Если ((Выходной И Праздничный) ИЛИ Рабочий) Тогда
    ЧтоТоСделать();
КонецЕсли;

Правильно:

Если (Количество * Цена - 1) * 100 <> 0 Тогда    
    ЧтоТоСделать();
КонецЕсли;

Если Выходной И Праздничный ИЛИ Рабочий Тогда
    ЧтоТоСделать();
КонецЕсли;

Особенности:

  • Параметр Находить лишние скобки в соответствии с приоритетом выражений (арифметических и логических) позволяет отключить проверку скобок в составных арифметических и логических выражениях. В этом случае проверка будет находить только лишние внешние скобки и скобки, обрамляющие единичные операторы и выражения.

  • Параметр Разрешено окружать скобками операции сравнения позволяет разрешить использование скобок у единичных операторов сравнения. В этом случае подобные конструкции будут считаться корректными:

ПовторноеЧтение = (Кэш <> Неопределено);
ЭтоОтчет = (Объект.Вид = ВидДополнительныйОтчет) ИЛИ (Объект.Вид = ВидОтчет);
  • В составных арифметических и логических выражениях проверка игнорирует скобки в операциях равных приоритетов, если скобки используются во втором операторе и далее. Таким образом исключены ложные срабатывания в операциях конкатенации, например:
ВывестиСообщение("Информация: " + (ИндексСтроки - 1));

См. также

Экранирование кода

// sonar:UselessParenthesis:off
// sonar:UselessParenthesis:on