
Sergey
14.12.2017
16:06:11
ИМХО его набросы в целом полезны... точнее всегда любопытна реакция на набросы

Maksim
14.12.2017
16:06:50
ну реакцию на "ддд говно" я бы тут посмотрел) должно было норм пригореть)

Anton
14.12.2017
16:07:40
просто так нельзя сказть ддд — говно

Dmitry
14.12.2017
16:07:44

Google

Anton
14.12.2017
16:07:48
нужно ведь начинать с каких-то аргументов
просто зайти и сказать — ничего не выйдет.

Maksim
14.12.2017
16:08:01
Сергей, DDD говно!
OOP лучше!

Adel
14.12.2017
16:09:29
чтобы не быть голословным
https://www.youtube.com/watch?v=ckjAWXJWZEY

Like
14.12.2017
16:10:53
Легчайший наброс:
Джависты не люди :)

Maksim
14.12.2017
16:11:03
)))))))))

Adel
14.12.2017
16:11:11
Цитата про него с нашего форума: "Он сделал сеттер TransactionScript::setId(). И назвал это «sql speaking object». И написал книгу, выступает на конференциях. Своего рода Евгений Попов в мире архитектуры."

kana
14.12.2017
16:11:37
ну или сказать, что в джаве нет ооп, там просто скрытая сахором процедурщина
не то что в эрланге

Dmitry
14.12.2017
16:13:14
ну тут вроде интерсно говорит
https://www.youtube.com/watch?v=lfdAwl3-X_c

Like
14.12.2017
16:18:05

Google

Dmitry
14.12.2017
16:18:26

Like
14.12.2017
16:18:40
В смысле, в докладе

Dmitry
14.12.2017
16:19:09

kana
14.12.2017
16:35:12
книга, которую microsoft издал, полагаю

Dmitry
14.12.2017
16:37:46
Посмотрел я этот его доклад, помоему дельные вещи говорит

kana
14.12.2017
16:38:29
меня никогда не покидает мысль, что когда люди говорят про правльный ооп, они говорят про фп с объектами
а тут еще он рассказывает про его правильную инкапсуляцию - все операции с объектом должны проходить внутри объекта
это так монады в хаскеле работают, лол
мы не создаем объект State и работаем с ним извне, записывая и читая из него, мы работаем внутри него, а когда выходим из него (запускаем стейт), мы теряем доступ к стейту
на понятном примере для вас - мы так работаем с промисами
мы работаем с промисом исключительно внутри промиса через .then

Like
14.12.2017
16:44:12

kana
14.12.2017
16:45:50
ну таки нет, то, что я выше написал - немного другая идея, он говорил просто делать имена методов, которые не будут отражать структуру класса, а не проводить всю работу с объектом X внутри X

Like
14.12.2017
16:47:42
ну таки нет, то, что я выше написал - немного другая идея, он говорил просто делать имена методов, которые не будут отражать структуру класса, а не проводить всю работу с объектом X внутри X
Не досмотрел, но разве он говорил не о том, что объект будет объектом, если он будет уметь делать все что должен, а не быть тупа хранилищем, ну, и при этом косить под объект?

Dmitry
14.12.2017
16:48:56

Like
14.12.2017
16:51:13
Ну, дык, если не будет геттеров и сеттеров, то объект будет делать то, что ему положенно внутри себя, а не отдавать данные с которыми будет потом работать кто-то другой, в таком случае, он не будет косить под объект (его слова)
Ну, то есть, в целом, как я понял:
Если объект отдает свои данные просто так, он нарушает инкапсуляцию и является не объектом, а хранилищем, которое косит под объект
Чтобы он был объектом, он должен делать манипуляции с данными только у себя внутри

Adel
14.12.2017
16:54:31
write model :)

Dmitry
14.12.2017
16:58:32
Короче не знаю что вы на него накинулись, про ооп интересно рассказывает, про политику тоже интересно пишет. Ставлю мужику лайк )))

Sergey
14.12.2017
17:00:01

Google

Like
14.12.2017
17:01:21

Pavel
14.12.2017
18:49:26
“Проектирование по контракту: полезности концепции” https://medium.com/@pkolmakov/%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D1%83-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D0%B8-4da27e66fc31
Провел митап...не знаю, мож кому полезно будет. Сделал как мог. Не пинайте сильно.

da horsie
14.12.2017
19:01:03
В феврале собираюсь на Clean Architecture. Если вдруг кому хочется книжку с автографом дяди Боба - пишите.

Like
14.12.2017
19:01:35

Bohdan
14.12.2017
19:02:21

da horsie
14.12.2017
19:03:26
Книги я потом могу по почте отправить.

andretshurotshka?❄️кде
14.12.2017
19:18:16
лол)

Pavel
14.12.2017
20:28:44

da horsie
14.12.2017
20:41:27
конфа в Далласе

Sergei
14.12.2017
20:47:20

da horsie
14.12.2017
20:47:25
С книжками схема следующая. Заказываете на амазоне доставку на мой адрес в Калифорнии (адрес скажу в ЛС). Я подписываю и отправляю вам по USPS. Стоимость посылки можно рассчитать тут https://postcalc.usps.com/?gclid=Cj0KCQiA38jRBRCQARIsACEqIeue60cqeC78ZNJqhdwz_3EcqC4tJmpnct6FAWlqhOVkCLiUq0torTYaAlBnEALw_wcB мой зип-код 94560

Артур Евгеньевич
14.12.2017
22:05:35
Пацаны
А так ли хуева анемичная модель, как принято считать?

Sergey
14.12.2017
22:11:33
https://www.martinfowler.com/bliki/AnemicDomainModel.html
в частности тебя должно заинтересовать следующее
> By pulling all the behavior out into services, however, you essentially end up with Transaction Scripts, and thus lose the advantages that the domain model can bring. As I discussed in P of EAA, Domain Models aren't always the best tool.

Артур Евгеньевич
14.12.2017
22:33:10
Но вот если логика сложная и затрагивает множество сущностей
Гораздо легче дробить ее по сервисам

Google

Артур Евгеньевич
14.12.2017
22:33:46
Да это по сути пооуедурщина на классах
Но с использованием di и интерфейсов не так уж и страшно это
Код норм читается

Sergey
14.12.2017
22:34:32

Артур Евгеньевич
14.12.2017
22:34:41
Легок в понимании
А cqrs
Это ли не развитие классической модели

Sergey
14.12.2017
22:35:14

Артур Евгеньевич
14.12.2017
22:35:21
Где есть функции и процедуры
В том числе сейчас

Sergey
14.12.2017
22:36:14
Где есть функции и процедуры
там нет функций и процедур, у тебя там есть что-то пишет и что-то что читает. То что ты назвал - скорее всего ты имел ввиду CQS. И это тоже не про это, эро про сайд эффекты.
Но с использованием di и интерфейсов не так уж и страшно это
1. количество сервисов будет заоблочным
2. протестировать это дело в изоляции будет практически невозможно
3. сложнее поддерживать консистентность данных
4. я не знаю почему ты считаешь что код будет проще в понимании... это будет так если у тебя сервисы будут сгруппированы в модули адекватно, а отсюда возвращаемся к изначальной проблеме что люди в декомпозицию не умеют.
просто как-то так случилось что концепты типа whole value как-то в ООП не прежились (что иронично)


Артур Евгеньевич
14.12.2017
22:43:11
А вот если пытаться группировать все таки логику и данные как надо...не приведет ли это к супер жирным моделям? Да можно декомпозировать конечно, но с сервисами это гораздо проще...причем я не говорю про треш вроде классов StatusManager или UserHelper

Sergey
14.12.2017
22:44:04
если в строчках кода - то у тебя тогда будет много файлов, больше зависимостей, меньше изоляции данных, меньше контроля....
если же мы измеряем жирность поведением, то просто больше будешь дробить модели
ну то есть пример какой-бы....

Google

Sergey
14.12.2017
22:46:34
вот есть у нас система, там есть покупатели, продавцы, можно по рефералке регаться, заходить через соц сети.... что б еще добавить... чатиться могут....
ты сделаешь один класс User или как минимум 5 в этой ситуации?

Артур Евгеньевич
14.12.2017
22:48:51
Не один
Много

Sergey
14.12.2017
22:49:06
окей, а в ситуации с анемичной моделью и сервисами?
достаточно будет одного класса User с 50-ю полями или ты все же будешь это дело как-то разбивать?

Артур Евгеньевич
14.12.2017
22:51:12
Тоже много. Были бы тонкие ентити - юзер, продавец, покупатель, регистрация, сообщение и т.д и куча сервисов - мессенджер, товарообмена, регистратор и и т.д
Под тонкими ентити подразумеваю тупо маппинг колонок базы на классы

Sergey
14.12.2017
22:51:41

Артур Евгеньевич
14.12.2017
22:52:11
Разная функциональность по разным модулям

Sergey
14.12.2017
22:52:35
а так у тебя не будет разных модулей и разделения функциональности по ним?
месенджер это не только сущность участника, товарообмен - это не только сущность продавца
и ты можешь каждую из этих сущностей поместить в модули "товарообмена" или "месенджера"
и сделать их изолированными

Артур Евгеньевич
14.12.2017
22:53:24
Например метод buy

Sergey
14.12.2017
22:53:52
будешь его дробить?)