TGViewer
Сохранёнки программиста Сохранёнки программиста @prog_stuff · 6.53K subscribers
Post #2716 1.45K
Представьте: продакшен падает ночью. Причина — null где-то в глубине сервиса. Никто не знал, что он там может быть. Компилятор молчал.

А теперь другая история: разработчик 20 минут борется с ошибками компиляции. Исправляет. Деплоит. Всё работает. Никто не просыпается ночью.

Сегодня рассказываю про одну интересную статью. Автор утверждает: компилятор бесполезен не потому что он слабый, а потому что мы постоянно его обманываем:

1️⃣Null — говорим "это String", но на самом деле может быть null

2️⃣Unchecked exceptions — говорим "возвращает String", но может выкинуть исключение

3️⃣Касты — говорим компилятору "trust me bro, это точно Dog", а через месяц там оказывается Cat

4️⃣Side-effects — функция возвращает void, но делает что-то критичное. Компилятор не знает что

➡️ Что происходит когда перестаёшь лгать

Вместо nullOption<String>. Теперь компилятор видит разницу и заставляет обработать отсутствие значения.

Вместо кастов — union types. Добавили новый case? Компилятор покажет ВСЕ места, где нужно обработать новую логику.

Вместо "это просто int" — UserId, AppId, PostId. Теперь их невозможно перепутать.

➡️ Реальный кейс

Google Cloud outage в июне 2025 — причина null в неожиданном месте. Автор показывает, как диалог с компилятором мог бы предотвратить это: изменил тип поля на опциональное → получил сотни ошибок компиляции → понял, что дизайн неправильный → переделал на union type → компилятор показал все места, где нужна новая логика → добавил валидацию → скомпилировалось → задеплоил → спокойно спит.

📎 В общем, статья годная

@prog_stuff
  • ❤ 3
  • 🔥 2
More from @prog_stuff
  1. Sep 23, 2026Как реализовать get or create в PostgreSQL без гонок и раздувания таблицы Обстоятельный ра…
  2. Sep 23, 2026Как устроен исполняемый файл Linux и как разобрать его вручную Обстоятельная первая часть…
  3. Sep 22, 2026Как одну проверку Clippy ускорили в 3133 раза Казалось бы, проверить скобки в вызовах макр…
  4. Sep 22, 2026Как SQLite обеспечивает атомарный коммит Транзакция выглядит так, будто записалась целиком…
  5. Sep 21, 2026Как выбрать равновероятную выборку из потока неизвестной длины Интерактивный разбор объясн…
  6. Sep 21, 2026Как LMAX вынесла торговую логику в один поток Разбор архитектуры LMAX показывает, почему м…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →