@oop_ru

Страница 414 из 785
andretshurotshka?❄️кде
06.12.2017
21:05:37
@kanaflow

Bohdan
06.12.2017
21:25:38
в таком варианте теряется удобство обсуждений хоть и есть группа, но в ней меньше контекста

Andrew
06.12.2017
23:21:54
Привет всем, пара вопросов по закону Деметры) 1. Он про сокрытие структуры, т.е. про то как правильно готовить инкапсуляцию?) 2. Сокрытие данных - это НЕ про инкапсуляцию, а про грамотное расширение объекта, т.е. про Open-Close принцип, по сути?

Google
f4rt~
07.12.2017
00:04:19
и да инкапсуляция не только про information hidding

da horsie
07.12.2017
00:35:33
я бы сказал, что деметра про information expert, дескать держи логику поближе к данным. много точек - признак того, что от логики до данных далеко тянуться

f4rt~
07.12.2017
00:38:32
да,прости, ты прав

da horsie
07.12.2017
00:38:46
данные можно скрывать и без соблюдения OCP

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

Pavel
07.12.2017
05:11:49
Инкапсуляция это лишь один из способов достижения сокрытия инф.

Sergey
07.12.2017
06:50:51
информации в том плане "как оно чего там внутри устроено"

open/close = protected variations = information hiding

есть заметка Алистера кокберна (вроде его) где он делился что когда выдумывал protected variations из grasp он просто не знал про open/close и в целом это одно и то же и суть information hiding

Mykola
07.12.2017
07:41:24
закон деметры это не совсем про сокрытие, это про упрощение модулей

Google
Mykola
07.12.2017
07:41:52
каждый модуль должен знать об ограниченом количестве других модулей

Sergey
07.12.2017
08:20:47
Но по каким критериям ты ограничиваешь знания модуля о других модулях?

мне всегда казалось что LoD это следствие information hiding.

Mykola
07.12.2017
08:21:31
в самом законе не упоминается методология)

тут уже здравый смысл работает

Sergey
07.12.2017
08:22:28
"don't talk to strangers". и пример про собаку и ее лапы

то есть как по мне LoD это хороший способ трекать недостатки в сокрытии информации

Mykola
07.12.2017
08:24:43
закон деметры опять же, не про сокрытие, его можно и в другом смысле применять: строить архитектуру для уменьшения связности между модулями

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

Sergey
07.12.2017
08:26:46
что значит "просто скрывать"?)

Mykola
07.12.2017
08:32:27
ну смотри, у тебя может быть архитектыра "солнышко", где один модуль знает про все другие, как тут что-то скрыть? :)

скрыл - потерял модуль

Andrew
07.12.2017
08:43:07
Оооо..спасибо, парни) будет над чем подумать

Sergey
07.12.2017
08:46:36
ну смотри, у тебя может быть архитектыра "солнышко", где один модуль знает про все другие, как тут что-то скрыть? :)
ну.... надо обдумать. Я с тобой не согласен (не могу придумать как можно получить солнышко если у тебя с IH все хорошо) да и примеры к LoD намекают больше про IH... но ладно, вернемся к разговору на следующей неделе)

Борис
07.12.2017
09:57:40
ну смотри, у тебя может быть архитектыра "солнышко", где один модуль знает про все другие, как тут что-то скрыть? :)
Возможно, я вырвал из контекста, и что-то упустил. Ты всегда можешь использовать Events чтобы организовать взаимодействие между модулями. Тем самым у тебя никакой модуль не будет знать про другие, и ты будешь счастлив гореть в аду, потому что, бизнесслогика на ивентах это то еще веселье.

Sergey
07.12.2017
10:00:33
да и потом, бизнес логика на ивентах не больно если у тебя нормально выстроены взаимоотношения и разделение ответственности)

+ есть возможность трекать что в какой последовательности происходит

и это не влияет на консистентность

Google
Борис
07.12.2017
10:01:38
угу, расскажи это проекту DST

Sergey
07.12.2017
10:02:23
угу, расскажи это проекту DST
там была проблема с кохижен, разделением ответственности, дублированием логики, и вообще мы там нехило так наговнокодили с тобой)

cohesion = связность, не?
а coupling тогда что?)

а ну да, кохижен - связность, кауплинг - связанность

или внутренняя и внешняя связанонсть модуля

Sergey
07.12.2017
10:03:47
ай не пизди. Я туда пришел когда там был уже полный пиздец ты :)
я там только редактор презентаций пилил) вини во всем другого Сергея

ну и да, мы потом знатно айдишки переделывали)

Борис
07.12.2017
10:04:10
да... может быть и такое

Sergey
07.12.2017
10:04:20
но это мы уже вместе делали если ты помнишь)

я не могу сказать что там ивенты это было самое страшное - скорее хуки эктив рекорд

Mykola
07.12.2017
10:05:06
модули - это что угодно, куски приложения

Sergey
07.12.2017
10:05:22
Mykola
07.12.2017
10:05:44
обьекты, плагины, сервисы в контейнере, микросервисы в облаке, все подряд

акторы там

Sergey
07.12.2017
10:06:20
ну да, и ивенты между модулями побольше - норм тема

Mykola
07.12.2017
10:06:37
чтоб они взаимодействовали им нужно знать друг о друге, не важно ивенты или что

Sergey
07.12.2017
10:06:44
а ивенты в пределах модуля поменьше масштабом уже вызывает сомнения

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

Google
Sergey
07.12.2017
10:07:11
ему не важно будет кто его обрабатывать или нет

а потому прямой зависимости нет. Это просто часть его контракта

кинуть ивент

иначе у тебя будут появляться циклические зависимости между модулями, что плохо

Mykola
07.12.2017
10:08:14
ну тогда да, но модуль будет знать о диспетчере, которому он будет слать ивент

а если у тебя сабмодуль, т.е. часть твоего модуля, то возможно диспетчер тут лишний

Sergey
07.12.2017
10:09:08
не обязательно, диспетчер может быть сверху

(доменные ивенты типа))

но на определенном масштабе да, надо будет знать о диспетчере

вот только это может быть не общий диспетчер и между модулями может быть еще кто-то/что-то

короч хз о чеммы если честно

мне ивенты нравятся)

Mykola
07.12.2017
10:10:46
ивенты - это магия

с одной стороны все хорошо, бросил и забыл

Sergey
07.12.2017
10:11:12
ивенты - это магия
никакой магии

Mykola
07.12.2017
10:11:14
коуплинг и кохижн победил

в смысле никакой? а консистентность кто будет делать?

Aleh
07.12.2017
10:11:37
ивенты - это магия
вызовы методов тогда тоже магия)

Sergey
07.12.2017
10:11:51
в смысле никакой? а консистентность кто будет делать?
> Любая достаточно развитая технология неотличима от магии.

Google
Mykola
07.12.2017
10:12:10
вызовы методов - это вызовы методов конкретного обьекта, ты про него знаешь и контролируешь

а ивенты - это бросил и забыл

Aleh
07.12.2017
10:12:21
про ивент ты знаешь столько же)

Sergey
07.12.2017
10:12:27
вызовы методов - это вызовы методов конкретного обьекта, ты про него знаешь и контролируешь
ну вызвал ты явно метод другого модуля - кто тебе тут будет консистентность гарантировать?

Mykola
07.12.2017
10:12:44
если это мой модуль - то я

Sergey
07.12.2017
10:12:47
а ивенты - это бросил и забыл
ну так тебе и не надо о них помнить, если надо - значит тебе не ивенты тут нужны)

Aleh
07.12.2017
10:12:55
если это мой модуль - то я
с ивентами также

Sergey
07.12.2017
10:12:59
если это мой модуль - то я
а если не твой - то и не твои проблемы

Mykola
07.12.2017
10:14:27
окей, давайте реальную проблему решим: есть сервис создания юзера, есть куча внешних сервисов, на которых этого юзера надо зарегистрировать, юзер считается созданым, если он зарегистрирован на всех внешних сервисах

решаем ивентами ;)

Aleh
07.12.2017
10:15:01
ивенты имеют отношения к решению задачи столько же, сколько и вызовы методов

тут проблема не в ивентах, а в работе с внешними источниками

Mykola
07.12.2017
10:15:26
методы - все твои

нене, если ты вызываешь метод, ты его вызываешь у кого-то конкретного

ты контролируешь вызов каждого метода

Jan
07.12.2017
10:16:05
А некоторые заявляют, что с «этими событиями не разберешься, что и где вызывается и как обрабатывается».

Mykola
07.12.2017
10:16:09
а если ты послал ивент в диспетчер, то ты не знаешь что с ним дальше происходит

Aleh
07.12.2017
10:16:22
нене, если ты вызываешь метод, ты его вызываешь у кого-то конкретного
у объекта непонятно как заимплеменченного? Оч ценное знание конечно

Jan
07.12.2017
10:16:28
Поэтому типа ну их нах

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