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

Сравнение с булевой константой (CompareWithBoolean)

  • Тип: Дефект кода
  • Важность: Незначительный
  • Включена по умолчанию: Да
  • Теги: clumsy, suspicious

Описание диагностики

Сравнение выражения с булевой константой Истина или Ложь с помощью операторов = и <> является избыточным и снижает читаемость кода. Если выражение и так имеет тип Булево, то достаточно использовать его напрямую (или с отрицанием НЕ).

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

Примеры

Неправильно:

Если Значение = Истина Тогда
    // ...
КонецЕсли;

Если Значение <> Ложь Тогда
    // ...
КонецЕсли;

Правильно:

Если Значение Тогда
    // ...
КонецЕсли;

Если НЕ Значение Тогда
    // ...
КонецЕсли;

Исключения

Диагностика срабатывает только если тип второго операнда удалось вывести и он однозначно Булево. Если тип не определяется или является объединением типов, замечание не выдаётся — в таких случаях сравнение с булевой константой может быть обоснованным.

Например, БезопасныйРежим() возвращает значение типа Булево | Строка, поэтому сравнение с Ложь здесь корректно и замечание не выдаётся:

Если БезопасныйРежим() <> Ложь Тогда
    // ...
КонецЕсли;

Источники

Соответствие стандартам

Источник диагностики