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

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

Тип Поддерживаются
языки
Важность Включена
по умолчанию
Время на
исправление (мин)
Теги
Дефект кода BSL
OS
Незначительный Да 1 clumsy
suspicious

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

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

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

Примеры

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

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

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

Правильно:

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

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

Исключения

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

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

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

Источники

Сниппеты

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

// BSLLS:CompareWithBoolean-off
// BSLLS:CompareWithBoolean-on

Параметр конфигурационного файла

"CompareWithBoolean": false