Спотыкаюсь о «true, false, true»: как булева логика сводит с ума
Разработчик жалуется на путаницу с true/false — и мы его понимаем.

Когда true, false, true — это не про третий пол, а про баги
Однажды утром разработчик Мэтт Смит проснулся и понял: он больше не может смотреть на последовательность true, false, true без нервного тика. Его пост набрал вирусную популярность — видимо, потому что каждый из нас хоть раз ловил себя на мысли: «А что, если true — это на самом деле false, а false — это true, но только по пятницам?»
Проблема знакома всем, кто писал хотя бы один условный оператор. Булевы значения кажутся простыми, пока не начинается путаница с === и ==, или пока не выясняется, что 0 == false — это true, но 0 === false — уже false. Как будто JavaScript специально издевается, подсовывая нам «не совсем true» и «не совсем false».
Смит предлагает неочевидное, но гениальное решение: вместо true/false использовать строки "yes" и "no". Звучит как шаг назад в эволюции, но, возможно, это именно то, что нужно проекту, где баги плодятся быстрее, чем коммиты в пятницу вечером. Конечно, это не сработает для серьёзных систем, но для прототипов и хобби-проектов — почему бы и нет?
Кстати, если вы когда-нибудь дебажили код и обнаруживали, что переменная isActive равна "true" (строка), а не true (булево), вы уже в группе риска. Добро пожаловать в клуб.
Комментарий студии METABYTE: Мы тоже спотыкаемся о булевы значения, особенно когда клиент говорит «да» в чате, а в ТЗ написано «нет». Наши разработчики давно перешли на строгую типизацию — и вам советуем, чтобы не гадать, true там или false.
СЛЕДУЮЩИЙ ШАГ
Понравилось как мыслим?
Применяем те же принципы в клиентских проектах: AI, автоматизации, продукты, которые не умирают после релиза.