Информация

Дата основания
Местоположение
Россия
Сайт
vdsina.ru
Численность
11–30 человек
Дата регистрации

Блог на Хабре

Обновить
Комментарии 4
Ну это какая-то самоочевидная статья. Валидация-то применяется в основном для проверки данных, пришедших извне. И там все эти размышления о DSL и повышении уровня абстракции неприменимы. А внутри программы очевидно, что чем строже система типов, тем будет лучше.
Статья странная.
Так то валидатор является частью парсера.
Оригинальная статья про то, что лучше не проверять граничные условия каждый раз (не валидировать), а один раз привести данные к виду, которому мы доверяем. Если он порожден — он не может быть неправильным (либо явно указывает, что он не правильный, не давая собой пользоваться).
Система типов ровно про то же — она не позволяет преобразование к неверному типу без специальных операций. Предлагается использовать это преимущество для создания типов, в которых не может быть неверных с точки зрения предметной области состояний.
Что совой об пень, что пнём об сову. Если у нас есть валидатор, проверяющий, чтобы список был не пустой, а входные данные окажутся пустыми — валидатор выкинет исключение. Если у нас вместо этого есть тип «непустой список» — исключение выкинет конструктор типа. Только это всё равно будет то же самое, по сути, исключение в примерно том же месте, и обрабатывать его всё равно будет код приёмки данных.

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