Обложка канала

Блог программиста S0ER. Мысли, ранний доступ к видео, фоточки, короткие посты. Ничего конкретного, но что-то будет полезным.

SOER

4 года назад
Открыть в
В рамках ревью кода для Naris наткнулся на интересную ситуацию: - есть две структуры: DTO с данными пользователя (login, email, password) и моделька для записи в БД (тот же login, email и password). - в DTO проставляем валидирующий гуарды для email - нужно ли проставлять валидирующие гуарды для email в модельке, ведь мы уже сделали проверки при получении DTO Коротки ответ: да Потому что модель обрабатывается сервисом, который работает с сущностями БД, а DTO-ку получает контроллер, который взаимодействует с сервисом. Между сервисом и контроллером пролегает архитектурная граница, которая позволяет сервис инжектить куда угодно, соответственно сервис предоставляет интерфейс. Общее правило говорит, что данные требуют валидации при пересечении границы, и не требуют валидации при использовании внутри границ одного модуля/компонента. И да, в данном случае мы вроде сами контролируем весь поток данных, но любое изменение может легко провести в БД не email, а какой-то другой контакт. Дублирование проверок в данном случае оправдано.