Size: a a a

Software Design/Architecture/Zen

2021 July 30

ИЛ

Иван Лещёв in Software Design/Architecture/Zen
вызывать не значит включать в себя
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Юзкейс вот на картинке
источник
2021 July 31

K

Konstantin in Software Design/Architecture/Zen
Не, выше картинка, там довольно хорошо понятно, что валидация - подразумеваю то, что по I/O прилетело. И даже может быть базовая кверя до этого :)

По личному опыту знаю, что как только начинаешь пихать валидацию во внутрь это превращается в ад и Израиль
источник

HH

Human Human in Software Design/Architecture/Zen
Я не понимаю - вы сами разбили почему то на два слоя и теперь пытаетесь понять что куда надо впихивать?)
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
так там понимать не нужно

инпут валидация — вью леер
доменная валидация со всеми бизнес-рулами — домейн леер

+ можно ещё соблюдать контракты с помощью валидации агрументов внутри каких-то кверей / команд через условный fail fast принцип, чтобы гарантировать, что твой код правильно используют и ты не передашь в домен или куда-нить ещё невалидный запрос
источник

HH

Human Human in Software Design/Architecture/Zen
1. Вот ты говоришь все просто, а люди спорят уже сколько времени. Я вот больше за позицию по солид и в пизду эти стандартные слои.
У меня есть модуль где весь код написан в контроллерах и норм. Ибо он не будет меняться на 99%
2. Для этого есть типы
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
нащот типов не понял
источник

HH

Human Human in Software Design/Architecture/Zen
Ну если я правильно понял, ты говорил о том, чтобы чекать на каждой границе что-то повторно?
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
да, так и есть
источник

HH

Human Human in Software Design/Architecture/Zen
Если обернуть в тип, который гарантирует валидность ещё до-  то повторять не нужно будет
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
это при условии, что ты этот тип гоняешь через все слои. хорошей практикой принято для каждого леера держать свой тип
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
ну, я про дтошки
источник

HH

Human Human in Software Design/Architecture/Zen
Много у тебя таких кейсов где это было полезно? А не просто практика ради практики?
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
частенько вылезают, да
источник

HH

Human Human in Software Design/Architecture/Zen
Я иногда вытаскиваю из объекта запроса и передаю уже конкретные штуки по отдельности. Но это конкретные штуки уже в типе те валидны

А можно пример какой-нить?
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
пример чего ?
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
где это было бы полезно ?
источник

HH

Human Human in Software Design/Architecture/Zen
Да
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
1) когда есть несколько доменных сервисов, к-ые вызываются в разных интеракторах
2) когда доменная сущность конструируется в разных местах (валидация аргументов, fail fast)
3) когда вызывается непосредственно интерактор. у меня часто один и тот же интерактор может вызываться как через хттп апи из контроллера, так и через грпц / консьюмер ивента из шины. в таком случае, нужно гарантировать, что в объект команды / запроса / чего угодно ещё придёт валидный аргумент из любого энтрипоинта (валидация аргументов, fail fast)
источник

HH

Human Human in Software Design/Architecture/Zen
Апи не соответствует домену?
У меня такие кейсы только когда например есть отдельный http роутер как сервис,
источник