Юра
Я тут
Anonymous
Ну вода сплошная, мало что по существу
Вероятно потому что здесь и не может толком быть "конкретики" в 2003 году?
Anonymous
Все же 17 лет назад писалось. За это время реализации DDD обросли практиками
Юра
Хочу вернуться к одной такой щепетильной теме
Юра
Где в ддд находится бизнес логика
Юра
Я просто не спец по ддд поэтому не знаю реально
Maxim Kainov
В ентити и в сервисах )
Anonymous
Где в ддд находится бизнес логика
Не в энтити, если анемика
Maxim Kainov
Не в энтити, если анемика
В ддд в сервисах тоже логика пишется же
Юра
Просто я к чему
Юра
Интересует вопрос который я уже поднимал
Anonymous
В ддд в сервисах тоже логика пишется же
Так ты перечитай. Если ADM то только в сервисах, если RDM то сервисы + ентити
Юра
Как организовать транзакционность логики и бд
Юра
Чтобы либо вся логика и все в бд, либо ничего
Maxim Kainov
Anonymous
Логики в бд и не должно быть
Maxim Kainov
Потому что не рич
Какую логику в сервисах, а какую в ентити надо писать?
Anonymous
Анемичная модель не соответствует принципам ООП, потому что нет гарантии что она всегда в legal state, или что-то вроде того
Anonymous
Какую логику в сервисах, а какую в ентити надо писать?
Ну изменение приватных пропертей желательно держать на уровне энтити
Anonymous
Емнип
Maxim Kainov
С того что не в legal state
В ооп нет ничего такого
Anonymous
Даа?)
Anonymous
Да ну, с чего бы она не соответствовала
Ты занимаешься менеджментом стейта сущности вне самой сущности, это ж вроде нарушение инкапсуляции?)
Maxim Kainov
Ты занимаешься менеджментом стейта сущности вне самой сущности, это ж вроде нарушение инкапсуляции?)
Инкапсуляция это возможность объекта скрывать данные. Ооп не обязывает тебя скрывать всегда данные, как и не обязывает всегда наследоваться и использовать полиморфизм )
Anonymous
Тогда зачем вообще ооп? Го процедурщину, я создал
Maxim Kainov
Тогда зачем вообще ооп? Го процедурщину, я создал
И ооп и процедурный подход имеет место быть
Maxim Kainov
Вот https://softwareengineering.stackexchange.com/questions/359555/ddd-is-anemic-domain-model-an-antipattern-shoud-we-be-using-rich-domain-model
Anonymous
И ооп и процедурный подход имеет место быть
Не. Либо вы ооп, либо вы процедурщина
Maxim Kainov
Не. Либо вы ооп, либо вы процедурщина
Хочешь поспорить с Робертом Мартином?
Maxim Kainov
Выше по ссылке в Java в основном применяют анемичную модель
Anonymous
Хочешь поспорить с Робертом Мартином?
Да почему нет. Приводи, пообщаюсь, послушаю
Anonymous
Ты думаешь, аргументы к авторитету это не логическая ошибка?)
Maxim Kainov
Anonymous
Доброе утро
Maxim Kainov
Не. Либо вы ооп, либо вы процедурщина
Ну а твой аргумент какой?
Anonymous
Ну а твой аргумент какой?
Что либо туда, либо туда.
Anonymous
DDD и SOLID вполне совместимы. Совмещать процедурное программирование и ООП - дурной тон
atcq (Алексей)
Не. Либо вы ооп, либо вы процедурщина
где в таком случае посмотреть на правильный ооп код, чтобы от скрытия стейта и прочих ооп плюшек была наглядная и очевидная польза?
atcq (Алексей)
Написать самому?)
ну наверное его кто-то уже написал, где смотреть?
Maxim Kainov
DDD и SOLID вполне совместимы. Совмещать процедурное программирование и ООП - дурной тон
Если всегда нужно применять инкапсуляцию, то тогда и наследование с полиморфизмом тоже всегда нужно применять, иначе это не ооп тогда?
atcq (Алексей)
В гитхабе наверное 🤷‍♂
на гитхабе сплошное “С с классами“, которое от процедурщины только синтаксисом и отличается
Anonymous
Maxim Kainov
Fowler and Co come from a monolith system background, in their world an ADM approach would mean a single app with all these separate services instantiated in memory and the OrderDTO being passed around and mutated. This would be far worse than putting the methods on a rich Order model. But in a distributed system, there are many programs, each only requires a single Order method and runs it on multiple orders, loading each, running the method and then discarding it. It only requires a single Service and a stream of data objects.
atcq (Алексей)
Ну так искать надо не в C
не понял контекст ты )
atcq (Алексей)
С с классами - так часто называют с++ код, в котором не раскрыты идеи ооп, а используется только оопшный синтаксис
atcq (Алексей)
в большинстве проектов именно такой подход, чем он радикально отличается от процедурщины - для меня загадка
Maxim Kainov
В общем, у фаулера в коде каша была, и он решил, что единственно верный выход это рич модель
Юра
Юра
Вот тут здравый ответ был
Юра
Правда 2014 год и теперь походу надо переучиваться ментально
Maxim Kainov
Вот тут здравый ответ был
Это что за ссылка
Юра
Они в примере доктрин три показали передевать в метод энтити callback
Юра
Правда не сказали как это делать
Maxim Kainov
Какая ссылка?
Юра
https://stackoverflow.com/questions/25515452/sf2-using-a-service-inside-an-entity/25533968#25533968
Maxim Kainov
Если разработчики доктрины порекомендовали что то, это еще ничего не значит )
Anonymous
https://stackoverflow.com/questions/25515452/sf2-using-a-service-inside-an-entity/25533968#25533968
Ну симфони 2 это было давно и неправда
Maxim Kainov
Ого там ответище, надо будет почитать
Egor
Если разработчики доктрины порекомендовали что то, это еще ничего не значит )
Если учитель математики рекомендует выучить таблицу умножения, ибо будет жить проще, это тоже ничего не значит, довольно много людей с высшим образованием её не знают ))
Maxim Kainov
Ну симфони 2 это было давно и неправда
Сильно ничего не поменялось
Egor
Я просто не в курсе, кто рекомендует отречься от богатых моделей и использовать анемичные?
Anonymous
Никто?)
Maxim Kainov
А рекомендует кто?
Выше две ссылки было
Maxim Kainov
Много кто