При сравнении с логическими значениями мы выполняем магические приведения и получаем неожиданные результаты.

TL;DR: не сравнивайте с правдой. Либо вы истинны, либо ложны, либо не стоит сравнивать

Проблемы

  • Скрытые кастинги
  • Нарушение принципа наименьшего удивления
  • Нарушение принципа Fail Fast

Решения

  1. Используйте логические значения
  2. Не смешивайте логические значения с булевыми приводимыми объектами.

Контекст

Многие языки преобразуют значения в логические пересекающиеся домены.

Образец кода

Неправильный

Верно

Обнаружение

[Х] Автоматически

Линтеры могут проверять наличие явных сравнений и предупреждений.

Теги

  • Отливки

Заключение

Общепринятой отраслевой практикой является использование многих небулевых переменных в качестве логических.

Мы должны быть очень строгими при использовании логических значений.

связи



Больше информации



Если это не работает, не имеет значения, как быстро это не работает.

Мич Равера



Эта статья является частью серии CodeSmell.