|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach можешь выделить, что тебе особенно не понравилось, а как бы ты сделал? В формате форума нет :) Я бы код показал, если бы не NDA, поэтому могу только поделиться собственным опытом на конкретных примерах, но не в рамках целого проекта, это слишком затратно ( ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 18:31 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt love_bach можешь выделить, что тебе особенно не понравилось, а как бы ты сделал? В формате форума нет :) Я бы код показал, если бы не NDA, поэтому могу только поделиться собственным опытом на конкретных примерах, но не в рамках целого проекта, это слишком затратно ( Я же код не прошу, словами могешь обяснмть?ⁿ ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 18:40 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) список этих долбоебов слишком велик, а гарантий, что они там что то написали правильно - исчезающе мал Если сам не долбоеб :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:01 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach skyANA hVostt, имхо люди хотят халявы, статейки с примером на пару экранов а читать Гради Буча, Бертрана Майера, Мартина Фаулера, Эрика Эванса и др. понимать когда и почему это всё придумывалось, как развивалась и как применяется сейчас это же слишком сложно :) золотые слова! хотим халявы! есть какие-то более-менее приближенные к примеру комментарии? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:04 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:14 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach Я же код не прошу, словами могешь обяснмть?ⁿ Всё о чём я уже говорил. Убрать логику из домена. Изменение в домене должно происходить исключительно в командах. Команды не должны сохранять изменения, это область ответственности UOW и клиента, инициирующего изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:30 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA ViPRos пропущено... список этих долбоебов слишком велик, а гарантий, что они там что то написали правильно - исчезающе мал Если сам не долбоеб :) посыл был в том что - предлагающие долбоебы остальные - верующие ни один пидер не может ограничить ни один контекст, ни один агрегат не сможет агрегировать всех составляющих, любой компонент любого агрегата норовить стать всеобъемлющим,... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:38 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt love_bach Я же код не прошу, словами могешь обяснмть?ⁿ Всё о чём я уже говорил. Убрать логику из домена. Изменение в домене должно происходить исключительно в командах. Команды не должны сохранять изменения, это область ответственности UOW и клиента, инициирующего изменения. т.е. никакого "домена" и нет, а есть схема, и общесхемные команды ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:39 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos посыл был в том что - предлагающие долбоебы Почему у тебя такое сложилось мнение? ViPRos остальные - верующие Абсолютная вера однозначно плохо. ViPRos ни один пидер не может ограничить ни один контекст, ни один агрегат не сможет агрегировать всех составляющих, любой компонент любого агрегата норовить стать всеобъемлющим,... Глупости говоришь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 00:33 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos т.е. никакого "домена" и нет, а есть схема, и общесхемные команды Проблема в некорректном применении ООП. DDD и ООП -- вещи ортогональные. Ничего в DDD не сказано о том, как именно его нужно реализовывать. Что это обязательно должно быть сделано на объектах, используя инкапсуляцию, наследование, полиформизм, что называется "из коробки". На мой взгляд, это биг мистейк. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 00:43 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt ViPRos т.е. никакого "домена" и нет, а есть схема, и общесхемные команды Проблема в некорректном применении ООП. DDD и ООП -- вещи ортогональные. Ничего в DDD не сказано о том, как именно его нужно реализовывать. Что это обязательно должно быть сделано на объектах, используя инкапсуляцию, наследование, полиформизм, что называется "из коробки". На мой взгляд, это биг мистейк. это одно и то же (фуфло) просто немного ослаблены требования ты уже должен был понять, что невозможно определить контекст где однозначно определен хоть что либо во времени только прошлое может быть описано ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 01:21 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos это одно и то же (фуфло) просто немного ослаблены требования ты уже должен был понять, что невозможно определить контекст где однозначно определен хоть что либо во времени только прошлое может быть описано Очень даже возможно. Не на всю жизнь, но на текущий момент. Понимая, что всё меняется, код должен быть refactoring-ready. Когда видишь такую реализацию DDD, что в ней всё прибито гвоздями, и вообще проще переписать, чем исправить, то вовсе не обязательно DDD плохой, а те, кто его придумал "пидарасы" :) Ограниченный контекст -- это про "разделяй и властвуй". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 01:40 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach Теперь первоначальный вопрос уточню так: 1) если есть полная уверенность, что можем инкапсулировать "чистую" логика домена, то размещаем её в корне агрегата? 2) если что-то сильно выйдет за рамки 1) - рефакторим - выносим в команды, все-равно деваться некуда, и рефакторинг это не исправление "ошибок", это реакция на новые требования? 3) но, если все-равно есть ненулевая вероятность 2), может, ну его нафиг 1) и сразу 2)? 1) В корне агрегата размещается только логика общая для агрегата, остальная логика размещается в сущностях 2) Это нормальная ситуация, возникающая регулярно. Рефакторинг производится если новая логика лучше ложится на конкретную сущность/агрегат, а та, что не ложится - отправляется в сервисы 3) Куда "нафиг"? Сразу в процедурную лапшу? Вас проклянут те, кто будет это потом поддерживать ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:27 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA пропущено... Критикуешь - предлагай. Если сам не долбоеб :) посыл был в том что - предлагающие долбоебы остальные - верующие ни один пидер не может ограничить ни один контекст, ни один агрегат не сможет агрегировать всех составляющих, любой компонент любого агрегата норовить стать всеобъемлющим,... Про DDD и ограниченный (bounded) контекст явно не слышал, на практике применить не пробовал, а поносишь. Спрашивается в чем причина? В том что тебя сливают на пенсию? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:43 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos hVostt пропущено... Проблема в некорректном применении ООП. DDD и ООП -- вещи ортогональные. Ничего в DDD не сказано о том, как именно его нужно реализовывать. Что это обязательно должно быть сделано на объектах, используя инкапсуляцию, наследование, полиформизм, что называется "из коробки". На мой взгляд, это биг мистейк. это одно и то же (фуфло) просто немного ослаблены требования ты уже должен был понять, что невозможно определить контекст где однозначно определен хоть что либо во времени только прошлое может быть описано Event Storming тебе в помощь. Глянь мастер-классы тех же 2gis. Они, кстати, придерживаются несколько другим взгляда на DDD, чем Эванс (это про верующих). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:51 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos hVostt пропущено... Всё о чём я уже говорил. Убрать логику из домена. Изменение в домене должно происходить исключительно в командах. Команды не должны сохранять изменения, это область ответственности UOW и клиента, инициирующего изменения. т.е. никакого "домена" и нет, а есть схема, и общесхемные команды С такими высказываниями он нам тут про верующих и долбоебов затирает ))) ИМХО ты и есть тот, о ком пишешь: яростно отрицаешь чужое и проповедуешь своё. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:55 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA ViPRos пропущено... посыл был в том что - предлагающие долбоебы остальные - верующие ни один пидер не может ограничить ни один контекст, ни один агрегат не сможет агрегировать всех составляющих, любой компонент любого агрегата норовить стать всеобъемлющим,... Про DDD и ограниченный (bounded) контекст явно не слышал, на практике применить не пробовал, а поносишь. Спрашивается в чем причина? В том что тебя сливают на пенсию? ты как был неучем, так и остался, хотя прочитал кажись всех долбоебов на свете ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 09:48 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
skyANA ViPRos пропущено... т.е. никакого "домена" и нет, а есть схема, и общесхемные команды С такими высказываниями он нам тут про верующих и долбоебов затирает ))) ИМХО ты и есть тот, о ком пишешь: яростно отрицаешь чужое и проповедуешь своё. чудик, если чек не понимает чей этот метод - агрегата, сущности или инфраструктуры, то скорее всего все эти агрегаты и сущности надуманы (текущий уровень понимания предметной области) В нормальных системах главное - схема. Агрегаты и независимые сущности вычислимы. Контексты (кластеры, подсистемы) вычислимы. Инфраструктурные методы (включая сериализации, десериализации,...) общесхемны и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 09:56 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA пропущено... Глупости какие-то. Про DDD и ограниченный (bounded) контекст явно не слышал, на практике применить не пробовал, а поносишь. Спрашивается в чем причина? В том что тебя сливают на пенсию? ты как был неучем, так и остался, хотя прочитал кажись всех долбоебов на свете Критикуешь - предлагай. В последнее время ты только говном исходишь. Долбоебы, неучи... Кого ты на нас проецируешь? Своих коллег, что тебя моложе? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 10:56 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
hVostt Если у вас архитектура строится на CQRS, значит любые изменения данных системы должны быть в командах. Если бы в приведённом коде обработчика события был бы вызов команды, было бы ок. У вас в голове каша. Слово Command в CQRS не означает, что нужно в буквальном смысле создавать классы команд и только из них производить изменения. В данном примере изменения в агрегат вносятся как из хэндлеров команд, так и из хэндлеров событий, все логично и полностью соответствует CQRS ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 11:15 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos skyANA пропущено... С такими высказываниями он нам тут про верующих и долбоебов затирает ))) ИМХО ты и есть тот, о ком пишешь: яростно отрицаешь чужое и проповедуешь своё. чудик, если чек не понимает чей этот метод - агрегата, сущности или инфраструктуры, то скорее всего все эти агрегаты и сущности надуманы (текущий уровень понимания предметной области) В нормальных системах главное - схема. Агрегаты и независимые сущности вычислимы. Контексты (кластеры, подсистемы) вычислимы. Инфраструктурные методы (включая сериализации, десериализации,...) общесхемны и т.д. Какой-то 1С или Акцесс сразу представил. И как там все "вычисляется" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 12:11 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
StalkerS полностью соответствует CQRS ...соответствует "по Фаулеру"? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:03 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
love_bach Какой-то 1С или Акцесс сразу представил. И как там все "вычисляется" Не знаю, что там и как вычисляется, а так алгоритм простой. Граф связей сущностей анализируется, выбираются терминальные узлы, рассматриваются характер связей (разноглубинность и т.д.) ТУ и на основе этого выделяются агрегаты (макротипы) и/или независимые общесхемные узлы (это в обычном понимании "справочники"). Макротипы анализируются на предмет общих связей и кластеризуюутся в подсистемы. На основе этой информации генерируется динамическое меню. В системе уже имеются команды типа - Создать форму для макротипа Добавить элемент в макротип Удалить элемент из макротипа Сохранить изменения ... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:52 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
StalkerS hVostt Если у вас архитектура строится на CQRS, значит любые изменения данных системы должны быть в командах. Если бы в приведённом коде обработчика события был бы вызов команды, было бы ок. У вас в голове каша. Слово Command в CQRS не означает, что нужно в буквальном смысле создавать классы команд и только из них производить изменения. В данном примере изменения в агрегат вносятся как из хэндлеров команд, так и из хэндлеров событий, все логично и полностью соответствует CQRS При чём тут буквальный смысл? Понятно, что исполняет команду хендлер. Изменения вносятся не в командах, всё уже не соответствует. Зачем тогда команды? Вносите их где угодно. Получили репозиторий, и делайте своё грязное дело. Зачем вам CQRS, не пойму? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:22 |
|
DDD разнесение кода логики по классам
|
|||
---|---|---|---|
#18+
ViPRos Не знаю, что там и как вычисляется, а так алгоритм простой. Граф связей сущностей анализируется, выбираются терминальные узлы, рассматриваются характер связей (разноглубинность и т.д.) ТУ и на основе этого выделяются агрегаты (макротипы) и/или независимые общесхемные узлы (это в обычном понимании "справочники"). Макротипы анализируются на предмет общих связей и кластеризуюутся в подсистемы. На основе этой информации генерируется динамическое меню. В системе уже имеются команды типа - Создать форму для макротипа Добавить элемент в макротип Удалить элемент из макротипа Сохранить изменения ... Чёт уже какая-то жесть пошла. Ну тогда иди до конца, пусть это чудо само логику вычисляет и вообще работу работает :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:24 |
|
|
start [/forum/topic.php?fid=18&msg=39910837&tid=1354817]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 399ms |
0 / 0 |