Юра
Ни то ни се
Павел
Полумера чего?
Юра
Той же команды
Павел
Команда тут ни при чем :)
Павел
3 основные пользы от дто (может что упускаю):
1) Типизировнная структура как сказал Константин
2) Группировка в объект большого количества параметров метода
3) Разделение на слои. Это вроде изначальная задача была. Чтобы слои не знали друг о друге - данные передаются через дто, а не сковзняком сверху вниз (например http реквест летит до БД). Хотя и в другую сторону, тоже через ДТО
Пилот
Дело не в том, что это прям плохо, дело просто в подходе. Инкапсулирование логики в сущности дает некую защиту. С другой стороны, много сущностей почти без собственной логики и обычные круды. Например брать апи платформу, она вообще десериализует реквест сразу на энтити,без форм. Там же и валидирует, и сериалайз делает, и акссес лаер - все в сущности. И в принципе, это очень удобно и быстро там где почти нет логики. Но где логика - придаст боли и проблем. Некоторые вообще используют паралельно несколько методов, плюс вообще транзакшн скрипт, и это неплохо.
Короче вопрос неоднозначный. Просто хорошо знать плюсы, минусы и варианты.
> Некоторые вообще используют паралельно несколько методов, плюс вообще транзакшн скрипт, и это неплохо.
не до конца понял момент насчет несколько методов и транзакшн скрипта) это в апи платформе?
Пилот
и вдогонку насчет транзакшн скрипта - это ведь по сути любой стейтлесс сервис?
Пилот
транзакшн скрипт - это агрегат рут, потому что это юнит транзакции? юзкейс - транзакшн скрипт? доменный или апликейшен или инфрасервис которые стейтлесс - это транзакшнскрипт?)
Konstantin
Пилот
и еще чуть говна на вентилятор: дто - это транзакшн скрипт? 😄
Пилот
если например логика обработки в конструкторе
Пилот
ну чуть более сложная чем ассайн параметров в проперти дтошки
Павел
Павел
Павел
Это паттерн, можно вбить почитать) где примерно там где row gateway(Active record) , table gateway, data maper
Пилот
Пилот
ну то есть дто в контексте домена вообще быть не может типа
Пилот
а апликейшен хз) мб допустимо
Павел
Павел
Пилот
Юра
Короче дто придумали для статически типизированных языков чтобы передавать данные
Павел
Возвращаю из бд набор тупых данных - тоже дто
Павел
Из сервиса я могу вернуть ещё выше - свою отдельную дто которую сделаю после вычислений их 5 разных дто из бд и 2 из апи стороннего
Пилот
то я не спор ради спора, то я чисто для себя тоже утверждения удостоверить некоторые) может что не так понимаю
Пилот
то есть дтошка это именно зачастую инфраструктурный слой, максимум - апликейшен
Павел
Павел
Ну например у сущности может быть метод, который принимает некий объект, как структуру. Если сущность принимает этот объект, то это часть домена. Мы вполне можем этот объект заполнить выше в апликейшене а то и в контроллере или даже получить из бд. Считать это дто или нет - вопрос, но думаю на пустом месте обсуждение, которое абсолютно ничего не решает.
Пилот
вот пример
Пилот
Пилот
Пилот
это ведь скорее велью обжект если уже в домене?
Пилот
то есть иногда если VO без логики - то это дто? ты об этом? но ведь у нас в контексте ddd есть такие компоненты системы как сущности, агрегаты (рут или не рут) и велью обжекты, и доменные сервисы
Павел
Пилот
и VO иногда можно понимать как дто, это понятно)
Павел
Тут нет иногда, не иногда
Пилот
дада, это верно
Konstantin
там чутка название проекта торчит, если вдруг это критично 🙂
Пилот
промазал чутка)) хай буде)
Павел
Так что дто все же видимо про передачу
Пилот
в инфре?
Пилот
или как struct object
Павел
Уже не шибко важно, написано между частями приложения)
Пилот
ну то етсь иногда ВО это ДТО ) это понятно) тк ДТО это скорее имплементация, а во это терм в ддд
Павел
Пилот
да я думаю на ты можно) то я не утверждаю, а скорее полуутвердительно-полувопросительно кек
Пилот
вкидываю чутка на обсуждение скжмтк
Павел
Ну я короче хз, потому что это дрочь терминологии, и кто как пишет. Например кто то не будет передавать vo между слоями, значит никогда vo не станет dto.
Павел
И возможно это на самом деле верно
Павел
Но на практике, никто не мешает создать money, email снаружи и передать как часть дто.
Павел
DTO vs POCO vs Value Object / Habr
https://habr.com/ru/post/268371/
Павел
Ну вот а тут написано, что не пересекаются
Пилот
Короче сабтайпы один другого в зависимости от контекста исполнения)
Пилот
Но это неточно )
Dmitriy
Vo имутабельны, дто нет
The Ant
The Ant
в джсе всё объект, и любая переменная по типу let a = 2 является VO
The Ant
в питухоне та же история. Откуда это правило про иммутабельность? Опять рандом хуй с интернетов вещает?
Nikolay
The Ant
у вас проблемы с пониманием терминов )
Nikolay
Nikolay
The Ant
а что тогда?
The Ant
которые и есть значение
The Ant
откуда это правило?
The Ant
понимание термина паттерн есть?
The Ant
это шаблон, по русски блять. какой у во шаблон? )
Null
Имхо. Vo это набор свойств. Типа цвет красный форма круглый.