
Alex
20.02.2018
13:08:46
#жизнь_говно

Roman
20.02.2018
13:08:48
Посоны, специально для вас стикерпак

Sergey
20.02.2018
13:08:49
и это тоже

Артур Евгеньевич
20.02.2018
13:09:06
сук пока читал вашу хуйню напутал события и команды

Google

Maksim
20.02.2018
13:09:26

Артур Евгеньевич
20.02.2018
13:09:35
это ахуенно
я прям переосмысли подход к разработке

Roman
20.02.2018
13:09:53
В чем кстати разница cqs и cqrs?

Артур Евгеньевич
20.02.2018
13:10:41
т.е я понимаю что сейчас у меня может возникнуть период, когда я буду чрезмерно его использовать(типо как "ООП головного мозга" при знакомстве с паттернам) но подход очень хорош

Maksim
20.02.2018
13:11:14
что бы лишний раз не копипастить)
cqs действует на уровне методов/функций, cqrs повыше
для cqs не требуется разделение никакого. у тебя есть один интерфейс с двумя методами. Один для сайд эффектов но не возвращающий ничего и второй для чтения. То есть мы тут регламентируем ограничения для методов. Пример метода/функции которая нарушает CQS - array_pop.
CQRS это архитектурный паттерн, суть которого в том что бы разделить операции чтения и записи на уровне интерфейсов. Для записи один интерфейс и для чтения другой.
это разделение дает тебе свободу как именно будет происходить запись и чтение, будет ли это через один сторадж или несколько и т.д. свои модели чтения и т.п. Ну то есть все это уже детали реализации этих интфрейсов

Roman
20.02.2018
13:12:02

Sergey
20.02.2018
13:12:47

Google

Артур Евгеньевич
20.02.2018
13:13:09
или я, как вариант

Maksim
20.02.2018
13:13:30

Bohdan
20.02.2018
13:13:45
я тоже предпочитаю в дто держать валидацию
но по другой причине - они ближе к контроллеру и отдать ошибку на клиент проще

Maksim
20.02.2018
13:15:26
вот да, просто у меня дтошки всегда в валидном состоянии. Говна не возят

Артур Евгеньевич
20.02.2018
13:19:28

Maksim
20.02.2018
13:20:14

Alexandr
20.02.2018
13:20:59
Maksim @arturpanteleev , согласен, насчет сеттеров в вашей точке зрения больше смысла)

Sergey
20.02.2018
13:24:59
еще до мэппинга на dto
еще до того как они в контроллер попали)

Bohdan
20.02.2018
13:25:12
плюс формы
плюс доп данные

Sergey
20.02.2018
13:25:54

Bohdan
20.02.2018
13:26:09
пока неидеально все
будет время - возьму твои объекты и под свои нужды заделаю

Sergey
20.02.2018
13:26:31

Bohdan
20.02.2018
13:27:33
да хоть расскажешь свои идеи касательно них
я ещё не знаю, как конкретно применять буду

Артур Евгеньевич
20.02.2018
13:40:56

Sergey
20.02.2018
13:41:16

Google

Артур Евгеньевич
20.02.2018
13:41:25
зачем слою работающему с http протоколом что то знать о том, что имя должно быть строкой а не цифрой

Sergey
20.02.2018
13:41:38
тебе надо хорошо понимать что валидация бывает разной
есть тупая валидация которую надо делать на уровне максимально близко к входу. и есть валидация бизнес ограничений и т.д.
и это разные вещи
правила в духе "тут должна быть строка а тут число в пределах диапозона" - это как раз таки хорошо вписывается.
а твое недоумение я понимаю - когда запрос и то что приходит в бизнес лэйер 1:1 мэпится то профит не виден так уж сильно
вот только далеко не всегда оно мэпится 1:1

Артур Евгеньевич
20.02.2018
13:46:09
я тупанл, по факту также делаю в контроллере, просто там 90% проверки на непустое значение обязательных полей у меня
да понял

Roman
20.02.2018
13:49:42

Sergey
20.02.2018
13:49:42

Sergey
20.02.2018
13:50:58
где-то это входящие данные а где-то бизнес ограничения. Чаще всего бизнесу плевать на максимальное количество символов в имени например

Roman
20.02.2018
13:51:12
Всякие мамкины кулхацкеры, осилившие в установку Kali напихают тебе туда бог весть знает чего.

Артур Евгеньевич
20.02.2018
13:52:29

Maksim
20.02.2018
13:53:23
у меня в реализации валидация описана в командах в виде аннотаций. дёшево и сердито

Sergey
20.02.2018
13:53:24

Roman
20.02.2018
13:53:25
В плане валидации лучше перебдеть, чем недобдеть. Как говорится: "Never trust user input"

Google

Sergey
20.02.2018
13:53:51

Roman
20.02.2018
13:53:55

Sergey
20.02.2018
13:55:11

Maksim
20.02.2018
13:55:22

Sergey
20.02.2018
13:55:30
короч разберись что мы обсуждаем

Valentin
20.02.2018
18:47:20
Что-то не пойму. С 23 числа сообщений не было?))

Shmaltorhbooks
20.02.2018
18:53:52
Не посчитайте за оскорбление администрации, но я нашёл однодумцев @fesor

Admin
ERROR: S client not available

Shmaltorhbooks
20.02.2018
18:53:57
Извините, больше не буду в картинки)

Sergey
20.02.2018
18:55:56
creepy

Sergey
20.02.2018
18:59:09
лет 5 назад

Artur
20.02.2018
19:00:20
не надо в контроллере делаь сеты
но делать их надо

Sergey
20.02.2018
19:04:21
но делать их надо
ты правильно заметил что это бизнес процесс подразумевающий взаимодействие кучи сущностей
но сеттеры тут не нужны
смена паспорта - это по сути создание новой сущности

Google

Sergey
20.02.2018
19:05:02
ну и многие другие взаимодействия можно заменить с мутации через сеттеры на порождение новых сущностей и vo
но это не интуитивно потому что большая часть разработиков привыкла строить модель данных через UI

da horsie
20.02.2018
19:10:04

Artur
20.02.2018
20:07:53
номер паспорта я хз меняется или нет
но есть куда более простые изменения
при смене фам у юзера точно не стоит менять айди юзера

Maksim
20.02.2018
20:09:00
это не программистам решать, как правило)

Artur
20.02.2018
20:09:22
кек

Bohdan
20.02.2018
20:09:42
ну, иногда приходится быть продукт овнером тоже

Sergey
20.02.2018
20:13:15
у паспорта еще есть время пока он валидный, то есть свой цикл жизни

Artur
20.02.2018
20:15:38
всё так и ты говоришь добавю юзеру новый паспорт
но у нас нормализация реальности
у пользователя есть имя в паспорте
а есть имя пользователя
мисс/миссис
госпожа
ув.
это не обязательно отдельные сущьности
и едвали там нужен экшен. как не назови по сути будет сет