Сравнение с булевой константой (CompareWithBoolean)¶
| Тип | Поддерживаются языки |
Важность | Включена по умолчанию |
Время на исправление (мин) |
Теги |
|---|---|---|---|---|---|
Дефект кода |
BSLOS |
Незначительный |
Да |
1 |
clumsysuspicious |
Описание диагностики¶
Сравнение выражения с булевой константой Истина или Ложь с помощью операторов = и <> является избыточным
и снижает читаемость кода. Если выражение и так имеет тип Булево, то достаточно использовать его напрямую
(или с отрицанием НЕ).
Кроме того, такая конструкция маскирует возможную ошибку проектирования: если тип выражения по какой-то причине
отличается от Булево, то ветка кода может быть выполнена ошибочно.
Примеры¶
Неправильно:
Если Значение = Истина Тогда
// ...
КонецЕсли;
Если Значение <> Ложь Тогда
// ...
КонецЕсли;
Правильно:
Если Значение Тогда
// ...
КонецЕсли;
Если НЕ Значение Тогда
// ...
КонецЕсли;
Исключения¶
Диагностика срабатывает только если тип второго операнда удалось вывести и он
однозначно Булево. Если тип не определяется или является объединением типов,
замечание не выдаётся — в таких случаях сравнение с булевой константой может быть
обоснованным.
Например, БезопасныйРежим() возвращает значение типа Булево | Строка, поэтому
сравнение с Ложь здесь корректно и замечание не выдаётся:
Если БезопасныйРежим() <> Ложь Тогда
// ...
КонецЕсли;
Источники¶
Сниппеты¶
Экранирование кода¶
// BSLLS:CompareWithBoolean-off
// BSLLS:CompareWithBoolean-on
Параметр конфигурационного файла¶
"CompareWithBoolean": false