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

S>>Все это так, но речь не об этом. Все это ученые и компиляторо писатели. А Эрик Эванс вроде разрабатывал бизнес приложения, и вроде (но не точно) работал в ibm.

G>Честно говоря я вообще не знаю чем ванс занимался до написания книги и есть и значимые проекты в его истории. После он начал заниматься консалтингом.

Я тоже не знаю. Но он как и Фаулер или дядя Боб -- что-то поделали в самом начале, потом решили лопаты продавать книги писать.

S>>Мой вопрос был про кол-во людей, что много людей для того, чтобы технология взлетела и не требуется. Сравнивать их не имеет смысл. У DDD роль гораздо меньше.

G>Вроде ты сам пытался сравнить DDD и ООП.

Неправда. Я сравнивал кол-во апологетов ООП и ДДД. Намек был на то, что и там и там их было немного. Более того, сравнивать их лично не имеет
никакого смысла -- одни делали новую технологию, другие -- методологию.

S>>Ну не скажите, там иногда читают очень достойные доклады. Вот например:

S>>https://www.youtube.com/watch?v=KTy4rqgPOjg
G>Не понял что в этом докладе интересного. Целый час только ради одного слайда с одной мыслью
G>

G>Pain = Strength * Volatility * Distance.
G>Reduce one of them to 0 to minimize the pain of necessary coupling.


Мне понравился, добавил в избранное на пересмотреть. Там много вещей проговаривает помимо этой формулы.


S>>В чем проблема найти компании и продукты у которых работает DDD? Спросите нейронку какую-нибудь. Наверняка что-то есть из докладов по ссылке выше.

G>Еще раз повторить аргумент про лженауки? У кого-то и астрология "работает".
G>Единственный способ доказать что что-то работает — провести эксперимент. Для ДДД это простой эксперимент — берем любой код с DDD, делаем эквивалентный без DDD и сравниваем объективные показатели — объем кода, количество связей между классами итд.
G>Важно взять именно работающий код, решающий задачу от начала до конца.

Мне это не интересно. Вам интересно, вы и делайте. Я хочу донести мысль, что огульно выкидывать ДДД не стоит -- для кого-то на каких-то проектов
он работает. Я работал в компании, которая распиливала монолит на микросервисы по ДДД. Использовали стратегические паттерны. Оправдано или нет -- не знаю, но вроде как-то работало. Опять же ДДД был не в полный рост, а что-то заимствовалось.


S>>А в ООП тоже верят? Ведь есть проекты для которых он избыточен, но все равно будет написано с 95% на каком-нибудь ООП языке.

G>Некоторые не верят, но что это меняет? Современные языки используют ОО-парадигму и часто базовые библиотеки реализованы как библиотеки классов. То есть ты любом случае будешь использовать ООП, даже если сам не придерживаешься ОО-парадигмы.

Некоторые не верят в ДДД, но что это меняет.

S>>Он не про ORM и таблицы в бд.

G>А про что?

101 раз говорю, что там все эти детали скрыты за паттерном Репозиторий. ДДД, кажется, не об этом.

G>Меня интересует подход к проектированию от начала до конца, а не просто в какой-то части, делая вид что других не существует.


Это подход к проектировании на основе проблем бизнеса, а не про орм или таблицы.

S>>Вероятно и у приложения будет один Bounded Context и один микросервис. Что не так?

G>Если order, line и product в одном агрегате, где root это order, то как получить список "лидеры продаж" с топ 30 товаров за месяц.

Какой-то метод добавить в репозиторий, наверное.

S>>Зависит от сложности. Ну найдите людей у которых все по DDD и поговорите с ними. Писать калькулятор по DDD странно, но какой-нибудь банковский софт, где требования регулярно меняются вполне может быть ок. Как обычно -- it depends.

G>См выше про эксперимент. Мнение интересует в последнюю очередь.

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

S>>Если сохранять класс, когда у него все ок с инвариантами, то почему нет?

G>Потому что в рамках одного класса нельзя сделать контроль остатков.

Почему?

S>>Для пользователя класса у него всегда должны быть инварианты, пользователь затем может этот класс сохранить.

G>Как описать инвариант: остаток товаров на складе должен быть не меньше суммы зарезервированных?

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

S>>А как это может доказать обратное? Зачем вообще что-либо подсчитывать?

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

См. выше про ООП -- что такое проделывали?

Еще раз -- я не агитирую за ДДД, я против огульного откидывания подходов, мол "не нравится", "не встречал" и т.п. Это субъективщина.
Наверняка можно найти человека с обратным опытом.
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.