@oop_ru

Страница 260 из 785
Артур Евгеньевич
26.06.2017
11:11:49
Я откуда знаю)

Кирилл
26.06.2017
11:14:08
Не, дичь какая-то это ddd XD

Danil
26.06.2017
11:18:18
а где это написано, что по ddd нельзя service создавать?

Denis
26.06.2017
11:22:52
А смысл в сервисе как хранилище бизнес логики, если по ддд она должна храниться в VO и/или aggregate root?

Google
f4rt~
26.06.2017
11:23:50
а как же сервисный слой?:D

Denis
26.06.2017
11:26:04
Сервисный слой нужен не для хранения бизнес логики, а для предоставления API для внешних потребителей. Создавать сервис ради наличия этого самого слоя? Потому что так принято?

Всё опять сводится к тому, кто что под сервисом подразумевает. Привычные Anemic сервисы в ддд не принято использовать, и даже если и есть что то похожее, то это фасад для потребителей или anti corruption layer

Sergey
26.06.2017
11:46:55
А смысл в сервисе как хранилище бизнес логики, если по ддд она должна храниться в VO и/или aggregate root?
Эванс приводил примеры когда отдельные бизнес правила выносятся в отдельные сервисы. Это просто объекты в конце концов.

это просто еще одни экторы, некоторые отвечают за инфраструктуру а некоторые за бизнес логику

Denis
26.06.2017
11:49:08
Бизнес правила? Ты имеешь ввиду классы вроде Specification, strategy и т.п.?

Sergey
26.06.2017
11:49:09
НО это не значит что ВСЯ логика должна быть в сервисах - большинство все же в сущностях

Бизнес правила? Ты имеешь ввиду классы вроде Specification, strategy и т.п.?
у меня есть чудный сервис под названием MerchantLimitCalculator. Потому что нет ни одной сущности у которой есть вся инфа.

и у сущности мерчанта есть метод

Denis
26.06.2017
11:50:30
Calculator это не сервис))

Sergey
26.06.2017
11:50:43
дай свое определение сервиса

Denis
26.06.2017
11:50:54
Это полноценный объект с состоянием и поведением)

Google
Sergey
26.06.2017
11:51:09
сервис это объект с состоянием?

фу фу фу

Denis
26.06.2017
11:51:31
"сервисный слой" понятие настолько обширное что обобщать настолько не очень хорошо
Именно потому что сервис не конкретен и возникают проблемы

Sergey
26.06.2017
11:51:35
ну то есть иногда надо - но лучше делать их stateless

и нет никаких сервисов, сервисного слоя и т.д.

есть слой бизнес логики, есть слой инфраструктурный

и все

Sergey
26.06.2017
11:52:37
как его синхронизировать то?

Sergey
26.06.2017
11:53:07
Не, дичь какая-то это ddd XD
почитай Эванса а не слушай всяких в чатиках. А потом уже после прочтения можно попытаться разбираться

Denis
26.06.2017
11:53:17
состояние тут лишнее ж
Это было определение калькулятора а не сервиса

:)

Sergey
26.06.2017
11:53:35
Это было определение калькулятора а не сервиса
у меня есть сервис - калькуляторо. Он лазает в базу. опрашивает заказы мерчанта и т.д.

Он вряд ли поймет
там со второго раза обычно доходит, но суть в том что прочитать всеравно надо хотя бы один раз

это книги из разряда "ты можешь это не юзать но ознакомиться обязан"

Like
26.06.2017
11:54:39
Ну если так, то согласен Но люди ж разные бывают) Вдруг он вообще ничерта не будет пониматьс с самого начала и сгорит?) Он забросит книгу)

Артур Евгеньевич
26.06.2017
11:54:57
Смотритие, есть предмет (русский язык) есть класс конкретной программы (русский язык в мгу, 1 семестр 2017, у группы ис-17) также в базе хранятся лекци (номер лекции, дата число и время). Программа считается законченной когда щаканчивается последняя лекция. В каком классе должен быть метод isStudyProgrammFinished?

Sergey
26.06.2017
11:56:05
Это было определение калькулятора а не сервиса
повторю вопрос - чем калькулятор - не сервис? Допустим мы изолировали доступ в базу другим сервисом и юзаем его как зависимость. Допустим нам что бы посчитать лимит надо узнать сколько мы напродавали в прошлом месяце, еще какие-то свои конфиги почитать и спросить внешний сервис о реджектах транзакций. И на каждое это действие у нас есть инфраструтурные сервисы. Почему калькулятор, который регламентирует бизнес правила и считает дела не является сервисом?

Google
Denis
26.06.2017
11:56:07
у меня есть сервис - калькуляторо. Он лазает в базу. опрашивает заказы мерчанта и т.д.
В базу лазить из домена, это не ддд. Вроде как есть такая абстракция как репозиторий, которая возвращает рут или выполняет кастомный запрос и возвращает вэлью обжект

Sergey
26.06.2017
11:56:38
В базу лазить из домена, это не ддд. Вроде как есть такая абстракция как репозиторий, которая возвращает рут или выполняет кастомный запрос и возвращает вэлью обжект
лазить в базу через гейтвей который лежит на границе между двумя слоями - очень даже DDD. Инверсия зависимостей тамвсякая и т.д.

и его юзает наш калькулятор

Sergey
26.06.2017
11:57:23
У тебя сущность не должна знать о бд
так она и не знает) потому у меня есть сервис - калькулятор

Like
26.06.2017
11:57:24
Леккция ведь заканчивается

Denis
26.06.2017
11:57:30
Она должна содержать чистую логику

Sergey
26.06.2017
11:57:47
Она должна содержать чистую логику
всю "грязь" мы изолируем, это не вопрос.

вопрос в том - почему ты считаешь что калькулятор, это не сервис

Артур Евгеньевич
26.06.2017
11:58:02
В классе лекции )
Так она нихуя не знает про то что она часть курса

Сейчас жто в кллассе курсСервис

Sergey
26.06.2017
11:58:28
Сейчас жто в кллассе курсСервис
а почему не просто "сущность курс"?

Артур Евгеньевич
26.06.2017
11:58:38
В Который в свою очередь инджектится сервис лекций

Like
26.06.2017
11:58:41
Вон в сервисе лекций заканчивай )

Артур Евгеньевич
26.06.2017
11:58:55
а почему не просто "сущность курс"?
Ну вообще так на проекте у нас

Сущности эт только ентити

Google
Sergey
26.06.2017
11:59:23
Сущности эт только ентити
тафталогия. энтити и есть сущности. У тебя это data model.

Denis
26.06.2017
11:59:29
Артур Евгеньевич
26.06.2017
11:59:43
А не будет ли жирная дата модель?

Like
26.06.2017
11:59:53
Можешь разбить если хочешь

Инкапсуляцию забацай и все

Denis
26.06.2017
12:00:03
Зато не бледная)

Sergey
26.06.2017
12:00:06
А не будет ли жирная дата модель?
если у тебя в data model появляется бизнес логика, и стэйт не вываливается наружу (нет геттеров сеттеров) - то она уже domain model

Артур Евгеньевич
26.06.2017
12:00:08
Не в ддд)
Я знаю, но я не могу понять в какаие классы логику выносить если не в сервер

Like
26.06.2017
12:00:22
Вы все про ддд общаетесь?

Sergey
26.06.2017
12:00:25
Admin
ERROR: S client not available

Артур Евгеньевич
26.06.2017
12:00:34
Сейчас сервис прос т свалка методов для сущности по факу

Я хочу победить это

Denis
26.06.2017
12:01:05
Я знаю, но я не могу понять в какаие классы логику выносить если не в сервер
Лучшее место для логики это VO, потом уже сущности и aggregate root

Sergey
26.06.2017
12:01:13
Я хочу победить это
почитай про GRASP, может поможет

Sergey
26.06.2017
12:01:39
Max
26.06.2017
12:01:40
аа все

Google
Like
26.06.2017
12:01:40
Что такое UB лучше скажите

Denis
26.06.2017
12:01:51
Sergey
26.06.2017
12:02:20
в целом DDD - он про единый язык. А все остальное легко покрывается GRASP и SOLID

Лучшее место для логики это VO, потом уже сущности и aggregate root
например вот это утверждение это прямое следствие такой штуки как "информационный эксперт"

Like
26.06.2017
12:03:17
Серега, ты вспомнил кто grasp замутил?)

Артур Евгеньевич
26.06.2017
12:03:20
Value Object
И как назвать класс

Sergey
26.06.2017
12:03:29
Серега, ты вспомнил кто grasp замутил?)
Крэйг Ларман. Не знаю че затупил так. Я чет себе пометку забыл поставить(

Denis
26.06.2017
12:03:38
Например Address)

Sergey
26.06.2017
12:03:43
И как назвать класс
а что он представляет?

Max
26.06.2017
12:03:49
И как назвать класс
названия классов должны отображать твою бизнес модель

Артур Евгеньевич
26.06.2017
12:03:52
У меня будет lectionEntity lextionValueObject

Sergey
26.06.2017
12:04:01
У меня будет lectionEntity lextionValueObject
убери эти бесполезные суфиксы

Lection и LectionDuration например

Like
26.06.2017
12:04:27
У меня будет lectionEntity lextionValueObject
Папка Entities чтобы прям для наглядности (раз любишь писать Entity )

Sergey
26.06.2017
12:04:33
первое сущность - конкретная лекция, второе - VO которое описывает длительность лекции например

ну то есть суффиксы - это рак

Like
26.06.2017
12:05:01
так себе идея (
Почему? @fes0r

Артур Евгеньевич
26.06.2017
12:05:07
ну то есть суффиксы - это рак
Вот я это и пытаюсь понять

Sergey
26.06.2017
12:05:56
Вот я это и пытаюсь понять
пойди от обратного. Твои названия должны отражать что представляют объекты. А не их тип. Это детали которые никому не интересны. Точно так же структура директорий должна показывать что происходит а не из какого типа вещей состоит проект.

Sergey
26.06.2017
12:05:57

Страница 260 из 785