Re[30]: Что если не разделять строго dto, entity, bo...
От: Sharov Россия  
Дата: 16.01.26 12:34
Оценка:
Здравствуйте, gandjustas, Вы писали:

S>>Чем DDD хуже истоков agile и термина рефакторинг?

G>Тем что рефакторинг и agile имеет доказанную пользу, а DDD — нет.

Для разработчика из видео выше это будет не так -- у него ДДД имеет доказанную пользу. Короче, это субъективщина.


S>>>>Я работал в компании, которая распиливала монолит на микросервисы по ДДД. Использовали стратегические паттерны.

G>>>Какие паттерны?
S>>https://habr.com/ru/articles/787460/
G>Это не про код, а про какую-то философию, тут вообще сложно что-либо оценивать. Меня именно код интересует.
G>Ну вот мы сделали два разных класса Employee. У меня сразу вопрос: это одна таблица в системе или нет? Если

Это можно решить в самый последний момент, согласно ДДД. Это детали.

G>Как быть если ЗА начинает зависеть от skills (они в разных моделях)?

G>И вообще calculateWageWithoutTax в employee выглядит крайне сомнительно, для расчета ЗП и налогов нужно такое количество данных подтянуть из всей системы, из-за которых сама система и делает, что прокинуть это все в один Employee выглядит неразумным.

Значит нужен какой-то другой agg root.

G>DDD это набор паттернов, которые вроде как должны хорошо работать в каких-то сценарияхх, но на проверку они все плохо работают.

G>В любой книге про DDD 80% это паттерны и 20% это какие-то философские вещи.

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

G>Функционал нужен пользователю. Пользователь нажимает кнопки, кнопки вызывают хэндлеры. Вызывать репозиторий из хэндлера? А где тогда DDD?


Значит тут и репозиторий особо не нужен, обычный DAL.

S>>Помилуйте, были Си (процедурный язык), Lisp\Ocaml (фп языки), prolog (лп). Языков тьма. Тот же Erlang был. Но вот почему-то был выбран один из ООП языков. Почему?

G>Потому что в середине двухтысячных были современные языки: C#, Java, Delphi (еще живой был, но только десктоп)), С++ (который был в глубочайшем кризисе)
G>Для веба был еще PHP, но он даже на фоне Delphi выглядел как наколеночная поделка.
G>Так как я знал делфи и хотел развиваться в сторону веба, то выбор был C# или Java — оба ОО-языки.

Но опять же, никаких разумных сравнений произведено не было -- loc, сложность поддержки и т.п. Чисто умозрительные вывод. Вот для кого-то
и ДДД выглядит интересно.

S>>Проверка инварианта делегируются бд, а класс получает результат этой проверки. В бд можно делать еще lock, если что.

G>Покажешь пример кода, как это сделать?

В транзакции что-то посчитать? Закиньте соотв. промт в чатбот.


S>>Ну так переделайте на read-write, а не просто read. И используйте соотв. уровень изоляции, например read commited.

G>На read commited это и происходит.
G>Можно for update локи вешать в начале, если меняется та же запись, но на практике есть остаток на складе и список реезрвов, там уже serializable надо.
G>Но мы уже ушли от работы с объектами в памяти. Что собственно и демонстрирует что в таком режиме самые важные инварианты реализовать нельзя. Надо с базой работать.

А бд не с объектами в памяти работает? Ну если у нас данные лежат в бд, то естественно что их надо забрать оттуда.


S>>Не серьезно -- вы приложили опереточный пример, а в случае DDD речь может идти о 10 или 100 тыс. строк кода минимум.

G>Это опять вера, что на каком-то количестве строк DDD обязательно сработает. Но примеров нет.
G>Почему-то все работающие методики работают даже на очень малых примерах.

Кто-то считает, что 1 млн лок на пхп без ДДД это уже вилка. Ну вот можно от этой цифры отталкиваться. Хотя сколько людей, столько мнений.

S>>Не одно и то же. Одно дело сравнить алгоритм сортировки на Си vs С#, другое дело какое-нибудь годами разрабатываемое десятками людей ПО.

G>Любое ПО декомпозируется на отдельные компоненты, о чем говорят все методики и DDD в том числе. если в рамках одного простого компонента нет преимуществ, то почему кто-то думает, что на большом масштабе преимущества появятся?

https://ru.wikipedia.org/wiki/%D0%AD%D0%BC%D0%B5%D1%80%D0%B4%D0%B6%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C


S>>Попросите у чатбота какого-нибудь пример приложения, написанного по DDD.

G>Я спрашивал, все примеры содержат очень сомнительные решения, которые без паттернов DDD были бы проще и надежнее.

Возможно. 101 раз повторю -- это вкусовщина. У разработчика из Я. по ссылке выше на этот счет может быть другое мнение. И это нормально.
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.