Обновить
4K+
2
Arutyun Tatulyan@haru_t

Engineering Manager, Python Developer

3
Рейтинг
1
Подписчики
Отправить сообщение

Невыразимое невалидное. Часть 2. Поведение и границы

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели4.6K

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

Читать далее

Невыразимое невалидное. Часть 1. Данные

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.8K

Знакомый сценарий: фильтр или конструктор запросов начинается с одного опрятного класса, а через месяц в нём value: Any, валидатор на сотню строк и ветка, дописанная ночью перед релизом, — её забыли покрыть тестом, и она падает в проде.

Разбираем контринтуитивный выход: не «добавить ещё проверок», а сделать невалидное состояние таким, чтобы его нельзя было даже собрать. В первой части — сами данные: сумма-типы, дискриминированные union’ы и точные значения в pydantic; и где всё это ловит тайп-чекер, а где остаётся рантайму.

Читать далее

Информация

В рейтинге
1 589-й
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Архитектор программного обеспечения
Ведущий
От 10 000 $