bslls:CompareWithBoolean¶
Сравнение с булевой константой (CompareWithBoolean)¶
- Тип: Дефект кода
- Важность: Незначительный
- Включена по умолчанию: Да
- Теги:
clumsy,suspicious
Описание диагностики¶
Сравнение выражения с булевой константой Истина или Ложь с помощью операторов = и <> является избыточным
и снижает читаемость кода. Если выражение и так имеет тип Булево, то достаточно использовать его напрямую
(или с отрицанием НЕ).
Кроме того, такая конструкция маскирует возможную ошибку проектирования: если тип выражения по какой-то причине
отличается от Булево, то ветка кода может быть выполнена ошибочно.
Примеры¶
Неправильно:
Правильно:
Исключения¶
Диагностика срабатывает только если тип второго операнда удалось вывести и он
однозначно Булево. Если тип не определяется или является объединением типов,
замечание не выдаётся — в таких случаях сравнение с булевой константой может быть
обоснованным.
Например, БезопасныйРежим() возвращает значение типа Булево | Строка, поэтому
сравнение с Ложь здесь корректно и замечание не выдаётся:
Источники¶
Соответствие стандартам¶
- #std441, п. 4: Общие требования к построению конструкций встроенного языка — Диагностика «Сравнение с булевой константой (CompareWithBoolean)» проверяет условие пункта 4 стандарта std441.
Источник диагностики¶
- Исходная статья
- Ревизия:
f4616cda8a216789ee40529ed857e614b9e2ea25 - Лицензия:
LGPL-3.0-or-later