@oop_ru

Страница 637 из 785
Andrew
09.05.2018
09:58:19
теперь будет у юзера new UserEmail

вернее

Like
09.05.2018
09:58:29
теперь будет у юзера new UserEmail
class User { void changeEmail(UserEmail email) => _email = email; }

Google
Andrew
09.05.2018
09:58:45
fucntion email (UserEmail $email) $this->email = $email

@shindakioku а почему void?

Maksim
09.05.2018
09:59:58
fluent interface вышел из моды :) зачем этому методу что-то возвращать?)

Adel
09.05.2018
10:00:37
Кстати. а почему UserEmail? не просто Email?

Like
09.05.2018
10:00:43
@shindakioku а почему void?
Да там вообще сеттер должен быть

f4rt~
09.05.2018
10:00:45
Maksim
09.05.2018
10:02:01
CQRS :D
чё?)

Like
09.05.2018
10:02:13
Кстати. а почему UserEmail? не просто Email?
> public function change(UserEmail $email) : self

f4rt~
09.05.2018
10:02:27
чё?)
разделение на команду/запрос

Maksim
09.05.2018
10:02:33
> public function change(UserEmail $email) : self
эт имело бы смысл, если бы юзверь сам был иммутабельным

Maksim
09.05.2018
10:02:39
и возвращал новый объект себя

разделение на команду/запрос
спасибо, капитан) а каким боком ты его сюда приплёл?)

Google
Adel
09.05.2018
10:03:25
> public function change(UserEmail $email) : self
это то я понял. я просто про название класса. зачем оно названо UserEmail? потом надо будет CustomerEmail? CompanyEmail?

Maksim
09.05.2018
10:03:35
f4rt~
09.05.2018
10:04:15
class User { void changeEmail(UserEmail email) => _email = email; }
потому что вот это команда

Maksim
09.05.2018
10:04:59
мир стремительно становится хуже

Dmitry
09.05.2018
10:05:07
Like
09.05.2018
10:05:11
потому что вот это команда
class User { Email _email; set email(Email e) => _email = e; } А это? :)

f4rt~
09.05.2018
10:05:36
мир стремительно становится хуже
когда сформулируешь свою претензию явно, тогда и поговорим

Maksim
09.05.2018
10:05:56
но, ладно) отбросим все сомнения в том, что cqrs сюда притянут за яйца: команда может возвращать результат.

шах и мат.

f4rt~
09.05.2018
10:06:19
мир стремительно становится хуже

Adel
09.05.2018
10:06:20
true или false? ))

Maksim
09.05.2018
10:06:55
вопрос не в том, какой. А в том, что может.

f4rt~
09.05.2018
10:07:05
вопрос не в том, какой. А в том, что может.
в твоем маня мирке может, ок

Maksim
09.05.2018
10:07:18
в твоем маня мирке может, ок
в любом мирке. Включая его создателей

Like
09.05.2018
10:07:38
Сейчас бы за cqrs срачи разводить в 2018ом

Adel
09.05.2018
10:07:55
вопрос не в том, какой. А в том, что может.
я пытаюсь понять какой именно результат в твоем мире возвращает команда User::changeEmail

Maksim
09.05.2018
10:08:04
да cqrs нынче попса похлеще mvc в бывалые годы)

Google
Adel
09.05.2018
10:09:56
контекст почитай
это я тупой и ничего не понимаю, или Максим чтото сказал, не пытаясь обьяснить свою точку зрения?

Maksim
09.05.2018
10:10:43
максим задал вопрос, каким образом к объяснению войда приплели cqrs

f4rt~
09.05.2018
10:11:34
class User { void changeEmail(UserEmail email) => _email = email; }
причем аргументировал тем, что просто *может* ,при всем при этом, мои уморассуждения были привязанны иключительно к этому контексту ? а не обобщены

Maksim
09.05.2018
10:11:36
если у меня юзерь иммутабелен и смена емейла возвращает новый объект юзеря - это уже не cqrs?)

Adel
09.05.2018
10:13:35
если у меня юзерь иммутабелен и смена емейла возвращает новый объект юзеря - это уже не cqrs?)
наши закостенелые мозги не смогли даже предположить что юзер может быть не сущностью а VO

но это все равно странно :)

Maksim
09.05.2018
10:14:08
ну так пускай умный человек объяснит идиоту, за каким хером он за cqrs накинул :)

f4rt~
09.05.2018
10:14:56
еще раз ты рассуждаешь обобщенно, я привел свои умозаключения обращая внимания на текущий контекст

Maksim
09.05.2018
10:15:22
круто. мы буковки подгоняем под то, что нужно в текущий момент

миру звездец)

Adel
09.05.2018
10:16:04
свободномыслящий Максим развел спор ради спора :)

Maksim
09.05.2018
10:17:03
свободномыслящий Максим развел спор ради спора :)
да я вопрос задал) в ответ херню какую-то услышал. Ещё и слив до кучи.

f4rt~
09.05.2018
10:17:49
чел просто набросил хуйню не принимая во внимания, что слова были сказанны непосредственно к нужному контексту, где юзер не иммутабельный

Sergey
09.05.2018
10:17:52
CQRS :D
CQS а не CQRS

f4rt~
09.05.2018
10:18:01
Sergey
09.05.2018
10:18:03
вот он и возмутился

f4rt~
09.05.2018
10:18:17
коль так, тогда my bad

Sergey
09.05.2018
10:18:34
Максима легко возбудить фразами CQRS, actor model, event sourcing и "платежки"

Google
Adel
09.05.2018
10:18:56
обьясните кратко разницу

CQRS CQS

Sergey
09.05.2018
10:19:11
ох

Maksim
09.05.2018
10:19:27
Сергей, форвардни просто то, что мне писал)

универсальный ответ получился ж)

Sergey
09.05.2018
10:19:40
CQS - разделение методов ОДНОГО ИНТЕРФЕЙСА на команды и запросы CQRS - разделение команд и запросов по разным интерфейсам

Sergey
09.05.2018
10:19:59
универсальный ответ получился ж)
лень скролить, если есть под рукой форвардни, я себе добавлю в список

Adel
09.05.2018
10:20:15
да не. я понял. спасибо

Maksim
09.05.2018
10:20:36
для cqs не требуется разделение никакого. у тебя есть один интерфейс с двумя методами. Один для сайд эффектов но не возвращающий ничего и второй для чтения. То есть мы тут регламентируем ограничения для методов. Пример метода/функции которая нарушает CQS - array_pop.

CQRS это архитектурный паттерн, суть которого в том что бы разделить операции чтения и записи на уровне интерфейсов. Для записи один интерфейс и для чтения другой.

это разделение дает тебе свободу как именно будет происходить запись и чтение, будет ли это через один сторадж или несколько и т.д. свои модели чтения и т.п. Ну то есть все это уже детали реализации этих интфрейсов

cqs действует на уровне методов/функций, cqrs повыше

Adel
09.05.2018
10:21:13
а то я слышал варианты, что CQRS - это если только c ES. вот и спросил

Maksim
09.05.2018
10:21:51
а то я слышал варианты, что CQRS - это если только c ES. вот и спросил
даже если в таком контексте, es просто рядом стоит. никак не влияя

Sergey
09.05.2018
10:26:11
Adel
09.05.2018
10:26:24
Maksim
09.05.2018
10:27:59
коль пошла такая пьянка: а почему собственно es без cqrs нельзя?)

Dmitry
09.05.2018
10:33:54
а что такое ES ?

Maksim
09.05.2018
10:34:08
event sourcing

Google
Dmitry
09.05.2018
10:35:07
столько аббревиатур появилось, и все одинаковые, только по контексту можно отличить. И то если в теме )))

Sergey
09.05.2018
11:52:00
коль пошла такая пьянка: а почему собственно es без cqrs нельзя?)
ну потому что тебе нужны проекции, а значит пишешь ты в один "интерфейс" а читать будешь из другого.

ну то есть без такого рода разделения сделать ES в целом невозможно

Maksim
09.05.2018
11:57:51
ну потому что тебе нужны проекции, а значит пишешь ты в один "интерфейс" а читать будешь из другого.
ну, в целом, как бывалому наркоману, мне никто не запрещает не использовать проекции.

Sergey
09.05.2018
11:58:15
ну, в целом, как бывалому наркоману, мне никто не запрещает не использовать проекции.
ну если твоему приложению не надо читать вообще ничего - то да)

но тогда мы имеем дело только с командами

Aleh
09.05.2018
11:58:35
Мы можем читать из write model

Sergey
09.05.2018
11:58:42
ну и опять же стэйт самой write модели это тоже проекция)

Maksim
09.05.2018
11:59:30
отсюда вопрос, который накинул выше и на который ответ не получил)

Sergey
09.05.2018
12:00:25
Интерфейс один
ну далеко на этом ты ж не уедешь) но да, в теории можно. Просто я не уверен можно ли это называть event sourcing)

ибо sourcing как такового нет

Adel
09.05.2018
12:01:13
можно исправить фразу и сказать, что ES без CQRS бессмысленен

что в приличном обществе можно приравнять к слову нельзя

Aleh
09.05.2018
12:02:37

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