@oop_ru

Страница 661 из 785
Dmitry
29.05.2018
06:39:23
не соглашусь, скаляр - не обязательно настройка
Если сервису через DIC в конструктор передают не только сервисы и настройки, то это highly likely запашок.

Valentin
29.05.2018
07:58:39
@b101010 postfix. Две разные имплементации mta

http://shearer.org/MTA_Comparison

Evgenij
29.05.2018
08:28:12
Если сервису через DIC в конструктор передают не только сервисы и настройки, то это highly likely запашок.
Можешь привести пример передачи code smell структур, функции , entity или еще что ?

Google
Mykola
29.05.2018
08:49:11
Если сервису через DIC в конструктор передают не только сервисы и настройки, то это highly likely запашок.
да нет никакой разницы со стороны сервисов, DI да и только... что скаляры, что объекты, что функции - все можно инжектить

интересно другое: как это разрешается извне

Dmitry
29.05.2018
10:02:19
Можешь привести пример передачи code smell структур, функции , entity или еще что ?
Так всё в кучу: $service = new ActivateService($repo, $user, $date); $service->activate(); Сервис мутабельный, в контейнер без фабрики не запихнёшь. А так с разделением: $service = new ActivateService($repo); $service->activate($user, $date); Теперь иммутабельный и переиспользуемый.

Daniel
29.05.2018
10:30:39
Ааа.. Maybe это был не "мб"

Bohdan
29.05.2018
10:34:16
Ааа.. Maybe это был не "мб"
:) да то я так, умных людей в чате начитался и думаю о том, чего не понимаю

Daniel
29.05.2018
10:34:31
Блин, выглядит прикольно

Bohdan
29.05.2018
10:37:40
нет, тут когда - то обсуждали монады а go - это я на нем пописывал вчера, перед глазами было

Dmitry
29.05.2018
12:44:01
ну есть еще всякие регистри которые как бы хранят стэйт
Ну рантаймовский statefull сервис - это как global variable на свой страх и риск. Но и их местами можно из $registry->set(...) переделать в иммутабельные $registry->with(...) и передавать в методы явно.

Sergey
29.05.2018
12:46:56
Ну рантаймовский statefull сервис - это как global variable на свой страх и риск. Но и их местами можно из $registry->set(...) переделать в иммутабельные $registry->with(...) и передавать в методы явно.
да, можно, в целом сами регистри можно даже не прокидывать оставляя их внутри контейнера всегда, а прокидывать какие-нибудь прокси которые прячут нюансы

Google
Andrew
30.05.2018
05:40:50
У меня доменная модель юзера в DDD уже на 2 к строк, это нормально?)

Dmitriy
30.05.2018
05:52:18
нет

закинь на гист, заценим

Sheldhur
30.05.2018
06:16:07
У меня доменная модель юзера в DDD уже на 2 к строк, это нормально?)
Если ты делаешь толстые модели, то да. Хорошо ли делать толстые модели уже другой вопрос.

Bohdan
30.05.2018
06:19:18
ты хочешь поговорить о том, почему рич модели - это плохо?)

Артур Евгеньевич
30.05.2018
07:07:18
ты хочешь поговорить о том, почему рич модели - это плохо?)
Кстати оказывается термина рич модел нет

Есть обычная нормальная модель, а есть уебанская анемичная

А типо рич просто как противопоставление появилось в разговорной речи

Sergey
30.05.2018
07:12:12
У меня доменная модель юзера в DDD уже на 2 к строк, это нормально?)
есть высокая доля вероятности что нет. Как понять что не так и почему она жирная: - берешь все свойства сущности (кроме айдишки), и смотришь как они юзаются. Тебя тут интересует только запись. - какие-то поля возможно стоит вынести в VO а какие-то в отдельную сущность (поскольку на запись только в контексте группы полей работаешь а не в контексте всей сущности юзера). - очень часто большое количество полей (и как следствие логики по работе с этими полями) оказываются в одном классе просто так, потому что и то и другое про юзера. Пример - пароль и весь стэйт связанный с авторизацией. Тебе он нужен только в момент авторизации, далее ты просто его таскаешь как мертвый груз. Причем в момент авторизации тебе нужен только кусок стэйта. Вывод - можно разбить это дело на 2 сущности независимые (у которых может быть связь через айдишку)

Sergey
30.05.2018
07:13:13
главная ошибка как по мне - когда стэйт группируется исходя из выборок из базы на чтение. Для того что бы шаблончики отрендрить или json сварганить. Тут интуитивно можно склеить две разные вещи и считать что так и надо. Как по мне это главный источник жирных сущностей

А "обычная" это какая?
ну это как модель здорового человека

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

Sergey
30.05.2018
07:14:43
тип все, что уходит во вьюшку - в одну сущность?
очень упрощенно - да. Оно там конечно не в одну сущность. Еще могут быть связи в одну сущность просто потому что в одной вьюшке юзаются.

а причем тут ООП?

Igor
30.05.2018
07:14:55
ну это как модель здорового человека
Не, "модель здорового человека" это на ADT, но к ООП это не имеет никакго отношения

Sergey
30.05.2018
07:15:12
Igor
30.05.2018
07:15:46
а причем тут ООП?
Возможно и нет, но мне так и не объяснили что такое "нормальная модель". Или почему "низкая связанность, высокое зацепление, разделение" не может быть в анемичных моделях.

Google
Sergey
30.05.2018
07:16:32
Возможно и нет, но мне так и не объяснили что такое "нормальная модель". Или почему "низкая связанность, высокое зацепление, разделение" не может быть в анемичных моделях.
тут "нормальная" в контексте декомпозиции, а классы, тайпклассы ли или прочие ADT тут роли не играет. Да с ADT можно более выразительно многие вещи описывать с меньшим количеством кода, но в целом мы можем представить что пишем на ruby и у нас нет ни ограничений ни типов)

"модель" ты можешь трактовать как модуль. Там у тебя будут объявлены типы и функции которые работают с этими типами. И все нюансы которые приводят к "моделям" на килостроки кода это в основном криво проведенные границы между модулями

p.s. я никогда не видел больших проектов с доменной логикой на каком-нибудь нормальном языке с ADT и страсть как хотел бы посмотреть....

Andrew
30.05.2018
07:52:02
всем спасибо, вынесу некоторые методы, и параметры в доп сущности и сгрупирую в VO.

@fes0r ваши ответы иногда надо записываю себе в save msgs ;)

Andrew
30.05.2018
07:53:44
поетому иногда)

у мну логика наверн тяжелая в етом все дел, апдейт емейл выходит 2 метода, 1-й записывает ивент изменения стейта vo userEmail, и второй метод применяет ивент к стету модели, что то в духе Flux, я думаю, с фронта

любое изменение стейта, через ивент.

16 полей + 14 связей :3

Andrew
30.05.2018
07:57:25
Угу)

Flux он же на ивентах и про ивенты тоже

и там тоже стейт есть

Sergey
30.05.2018
07:58:01
ну вот у меня есть такой на 600 строк

Andrew
30.05.2018
07:58:03
https://www.fullstackreact.com/p/intro-to-flux-and-redux/

Sergey
30.05.2018
07:58:29
https://www.fullstackreact.com/p/intro-to-flux-and-redux/
да знаем мы, но не надо называть это flux/redux. Там как никак упрощено сильно

Andrew
30.05.2018
07:59:00
Упрощено?)

Sergey
30.05.2018
07:59:09
а че там сложного?

Google
Sergey
30.05.2018
07:59:14
непривычно - возможно, но не сложно

Andrew
30.05.2018
07:59:38
Для изменения стейта, диспатч ивента, которой тригерет екшен, который тригерет мутатор, который изменяет стейт

Sergey
30.05.2018
07:59:47
там все сложности не технические а организационные. Типа "а че будет если я проипался и у меня

Admin
ERROR: S client not available

Sergey
30.05.2018
07:59:53
этот ивент это на самом деле 2 ивента"

Andrew
30.05.2018
07:59:55
Это не Ларавел в общем ?

Я кстати хз как бы делал такое в ларавел

Sergey
30.05.2018
08:00:36
Для изменения стейта, диспатч ивента, которой тригерет екшен, который тригерет мутатор, который изменяет стейт
не так.... 1. проверяем прекондишен 2. запоминаем ивент внутри сущности 3. триегрим обработчик события внутри сущности для выстраивания стэйта write модели

Andrew
30.05.2018
08:01:16
читаю

@fes0r мне кажеться, тут все то чт оя делаю сейчас с нуля

Sergey
30.05.2018
08:08:42
да ладно, не может быть такого что под довольно популярную практику кто-то что-то уже написал

Andrew
30.05.2018
08:11:07
ну я же разработчик, я должен писать свои костыли что бы понимать как работаю костыли других

Что бы понять других разработчиков нужно думать как они

Нужно быть ими

Sergey
30.05.2018
08:12:24
ничего, года через 3-4 пройдет

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

потому что ответ тебя расстроит

Bohdan
30.05.2018
08:13:09
угу.... сделали так либо потому, что им подходило, либо потому, что не придумали, как лучше =\

Maksim
30.05.2018
08:15:22
если ответ расстроит, то это будет хорошим знаком) а вот если нет, и всё принимать за чистую монету - довольно скверным)

Google
Tony
31.05.2018
09:08:54
Всем доброго дня! Следующий вопрос: есть yii2, есть SqlDataProvider. Имеет ли право Repository работать с такими провайдерами внутри себя или это не clean способ?

Антон
31.05.2018
09:09:29
тут наверное у всех фильтр на сообщения по слову yii

Mykola
31.05.2018
09:09:53
тут не чатик по yii, это точно

Tony
31.05.2018
09:16:45
Хорошо. Но вопрос был не по Yii2) Вопрос был по архитектуре. Конкретизировал для лучшего понимания)

Bohdan
31.05.2018
09:17:59
Хорошо. Но вопрос был не по Yii2) Вопрос был по архитектуре. Конкретизировал для лучшего понимания)
но ведь вопрос конкретизировано по yii2, который тут знает совсем не только лишь каждый

Артур Евгеньевич
31.05.2018
09:19:14
мне кажется в репозиторию можно любую хуйню инджектить, будь то просто обертка над sql или маппер. Лишь бы наружу торчали номральные методы с человеческими именами

Mykola
31.05.2018
09:21:57
array oriented programming

Maksim
31.05.2018
10:03:50
@fes0r привет, ходят слухи по интернетам, что ты пробовал php-pm, расскажи, как оно, стоит ли потратить время, чтобы пощупать? Какие очевидные подводные попадаются? Как в целом?

Sergey
31.05.2018
10:05:29
@fes0r привет, ходят слухи по интернетам, что ты пробовал php-pm, расскажи, как оно, стоит ли потратить время, чтобы пощупать? Какие очевидные подводные попадаются? Как в целом?
ну с учетом того что под php-pm есть готовый Dockerfile то подводные камни в целом те же что и для других вариантов всяких воркеров - кто-то из твоих сервисов может активно гадить в память, не быть преспособленным к тому что в пределах жизн ипроцесса может быть два+ запроса и т.д.

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