Size: a a a

Software Design/Architecture/Zen

2021 July 31

AI

Arthur Irgashev in Software Design/Architecture/Zen
далеко не всегда апи соответствует домену
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
хотя ладно, вопрос не понял :)
источник

HH

Human Human 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
но если посмотреть на в принципе любой адекватный стд (чисто как пример), то там любой вызов апи будет иметь валидацию аргументов
источник

SP

Sergey Protko in Software Design/Architecture/Zen
если у тебя приходит объект и вы договорились что "объект принимает валидные данные при создании" то валидация уже произведена а дальше все типы проверят
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
о каких типах речь ?
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
и откуда приходит объект ?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну вот приходит тебе в сервис объект на вход "все что ты хотел на вход". И значит что там именно ито и можно этим данным доверять. Потому что не должно быть возможности пропустить этап сборки этого объекта, и на этапе сборки этого объекта уже происходит валидация
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
ну так я об этом и говорю. на этапе конструирования проверяю валидность аргументов, и если что-то невалидно, то падаю по fail fast
источник

SP

Sergey Protko in Software Design/Architecture/Zen
я к тому что это все происходит ДО того как доходит до бизнес операций, где-то на подступах, ближе к ui layer
источник

AI

Arthur Irgashev in Software Design/Architecture/Zen
ну от уровня зависит. если ты перегоняешь данные между уровнями в виде дто, то по-хорошему придётся делать валидацию аргументов во всех дто

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

AI

Arthur Irgashev in Software Design/Architecture/Zen
и валидировать или в самом верхнем, или в самом нижнем
источник

AI

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

SP

Sergey Protko in Software Design/Architecture/Zen
Если хочется "на разных уровнях" валидировать значит нет механизмов позволяющих минимально контролировать что происходит с данными. Но в целом лучше так если в вакууме обсуждать
источник

NF

Nikita Fedorov in Software Design/Architecture/Zen
да, это именно то о чем я говорил, говоря что юзкейс это часть домена, а его реализации в слоях ниже
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Ну вот выше ниже обычно людей путает ибо картинки по разному эту идею упрощают
источник

NF

Nikita Fedorov in Software Design/Architecture/Zen
Как думаете, что понятнее, представление пайплайна как:
https://nuxtjs.org/docs/2.x/context.svg
Или по классике, как в прикрепленном файле
или мб то же самое что в примере nuxtjs но в вертикальном представлении как тут https://webauthn.guide/
источник

AI

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