METABYTE
К списку статей

Canonicalise, Don't Remember: Умные конструкторы в Kotlin спасут ваш сон

Как перестать помнить все правила создания объектов и доверить это компилятору — с юмором и примерами.

12 мая 20262 мин чтения
Canonicalise, Don't Remember: Умные конструкторы в Kotlin спасут ваш сон

Представьте, что каждый раз, когда вы заказываете кофе, бариста спрашивает: «Вам какой? А может, вы забыли сказать, что без сахара? А пенку?». Примерно так чувствует себя разработчик, который вручную проверяет корректность создаваемых объектов. Но Kotlin предлагает решение: канонизируйте, а не запоминайте.

Умные конструкторы (smart constructors) — это не rocket science, а скорее «сборка IKEA с инструкцией на русском». Вместо того чтобы помнить, что email должен быть валидным, а возраст — положительным, вы один раз пишете фабричный метод, который всё проверит и вернёт либо корректный объект, либо null. И всё, можно спать спокойно, не боясь, что в прод уйдёт пользователь с возрастом -5 лет.

Автор статьи предлагает подход canonicalise — то есть приводить данные к единому, нормализованному виду прямо в конструкторе. Это как если бы все входящие строки автоматически обрезали лишние пробелы и приводили к нижнему регистру. Никакого «а я думал, там уже почистили». Только хардкорная канонизация и никаких сюрпризов.

Конечно, можно было бы просто написать 47 if-ов в каждом месте создания объекта, но зачем, если Kotlin даёт элегантный механизм с invoke и компаньонами? Это как выбрать между велосипедом и Tesla: оба доедут, но один с ветерком и подзарядкой.

Комментарий студии METABYTE: Мы тоже устали помнить, что пароль должен быть длиннее 8 символов и содержать спецсимвол. Используйте умные конструкторы — и пусть компилятор делает всю грязную работу, а вы занимайтесь архитектурой (или хотя бы кофе).

СЛЕДУЮЩИЙ ШАГ

Понравилось как мыслим?

Применяем те же принципы в клиентских проектах: AI, автоматизации, продукты, которые не умирают после релиза.