Awesome Falsehood - когда «очевидные» вещи оказываются ложью

«Это же очевидно!» — сказал разработчик перед багом
Знакомо чувство, когда ваш код работает в 99% случаев, а в оставшемся 1% приводит к странным ошибкам? Возможно, вы стали жертвой одного из распространённых заблуждений, которые годами кочуют из проекта в проект. Репозиторий Awesome Falsehood собрал сотни таких «очевидных» утверждений, которые на деле оказываются ложными.
Что такое falsehoods в программировании?
Falsehood (англ. «ложное утверждение») — это идея, которую разработчики изначально считают истинной, но которая на поверку оказывается неверной. Например:
- «Email всегда содержит один символ @»
- «Имя пользователя не может начинаться с цифры»
- «В месяце не больше 31 дня»
Каждое из этих утверждений кажется разумным... пока вы не столкнётесь с реальными данными.
Почему этот репозиторий бесценен
Awesome Falsehood — это коллекция статей и примеров, развенчивающих распространённые мифы в разных областях разработки. Вот лишь некоторые темы:
1. Даты и время
- Високосные секунды существуют (и ломают ваши скрипты)
- Летнее время вводится не везде и не всегда
- 30 февраля 1712 года действительно существовало (в Швеции)
# Наивная проверка даты
if day > 31:
raise ValueError("В месяце не может быть больше 31 дня")
# А как же август, апрель, июнь и ноябрь?
2. География и адреса
- В Коста-Рике нет «нормальных» адресов — используются описания вроде «200 метров на север от церкви»
- Почтовый индекс медведя Смоки — 20252 (он получает столько писем, что ему выделили собственный ZIP-код)
3. Человеческие имена
- Имя может быть пустым (в некоторых культурах)
- Фамилия не обязана состоять из букв (встречайте г-на Null, чьё имя ломает базы данных)
- Гендерных вариантов больше двух
Как использовать этот репозиторий
- При разработке валидаторов — проверьте, не основаны ли ваши правила на ложных предпосылках
- При проектировании API — убедитесь, что ваши модели данных учитывают крайние случаи
- Для обучения — как наглядные примеры того, насколько сложен реальный мир
Самые неожиданные примеры
- Компания может называться
; DROP TABLE "COMPANIES";-- LTD(и это легально в Великобритании) - Температура в Фаренгейтах и Цельсиях не конвертируется простой формулой для всех значений
- В Японии есть места с такими названиями, которые не могут прочитать даже местные жители
Кому особенно пригодится
- Fullstack-разработчикам, работающим с формами ввода
- Авторам библиотек и фреймворков
- Разработчикам международных сервисов
- Всем, кто устал от «почему это не работает?!» в 3 часа ночи
Вывод: стоит ли тратить время?
Если вы хоть раз сталкивались с багом, который возник из-за «очевидного» предположения — этот репозиторий сэкономит вам часы отладки. Это не просто коллекция забавных случаев, а практическое руководство по проектированию более устойчивых систем.
«Логика мира первичнее всех истин и заблуждений» — Людвиг Витгенштейн
Проверьте свои знания — сколько из этих falsehoods оказались для вас неожиданностью?
