
da horsie
10.02.2017
23:07:59
плохо

Sergey
10.02.2017
23:08:07
избавься от них)
ну то есть.... какого рода там if-ы?
(вообще очень сложно обсуждать задачу не зная задачи))

Google

da horsie
10.02.2017
23:09:03
ну например апи может вернуть одного юзера по токену, а может нескольких, или ни одного

Sergey
10.02.2017
23:09:08
https://www.destroyallsoftware.com/talks/boundaries
вот к слову оч хороший доклад на эту примерно тему
p.s. если усложнять можно стратегию навернуть
таким образом сильно упростив логику
точнее вынести ее можно и разделить

da horsie
10.02.2017
23:10:49
да, да, все правильно

Sergey
10.02.2017
23:11:04
правильно по поводу исключения?

da horsie
10.02.2017
23:11:21

Sergey
10.02.2017
23:11:25
аа

Rodion
10.02.2017
23:11:42

da horsie
10.02.2017
23:11:54
дело в том, что пока я веду разработку "вслепую" мне вроде кажется достаточным, что у меня все легко тестируется и вроде все ок.

Google

Sergey
10.02.2017
23:12:04

Rodion
10.02.2017
23:12:22
"Выделите аспекты приложения, которые могут изменяться, и отделите их от тех, которые всегда остаются постоянными."

Sergey
10.02.2017
23:12:32
моки в перемешку с проверкой логики
ну то есть терпимо и если тебе норм то ладно
в целом в мое личное правило "не более двух моков на тест" пока оно вписывается)

da horsie
10.02.2017
23:13:24
и вот уже готова сложная штука, а она оказывается неправильной, и поменять ее тяжело, именно потому что внутри она все равно слишком связанная - именно моки вперемешку с логикой

Rodion
10.02.2017
23:14:04

Sergey
10.02.2017
23:14:14

da horsie
10.02.2017
23:14:19
видимо в этом конкретном случае просто "сначала тесты" не достаточно, а надо еще мозгом думать было

Sergey
10.02.2017
23:14:25

Aleh
10.02.2017
23:15:00

Sergey
10.02.2017
23:15:08
один конкретный тест кейс

Aleh
10.02.2017
23:15:38
Если объект требует инъекта 3 штук, то?

Sergey
10.02.2017
23:16:08
и как только заканчиваю с этим удаляю тест

Aleh
10.02.2017
23:16:23
А, вот ты про что
Понял

Google

Rodion
10.02.2017
23:16:37
про это было, кстати, в object calisthetics
типа "рекомендуется не более двух зависимостей"

Sergey
10.02.2017
23:17:10
погляжу посмотрю

Rodion
10.02.2017
23:17:25
ща попробую найти

Sergey
10.02.2017
23:17:32
http://williamdurand.fr/2013/06/03/object-calisthenics/
ты про это?

Rodion
10.02.2017
23:17:53
https://github.com/TheLadders/object-calisthenics

Sergey
10.02.2017
23:18:09
да, это оч крутая штука
я своим тоже даю обычно почитать

Rodion
10.02.2017
23:18:20
ну да

Sergey
10.02.2017
23:18:26
есть на русском
https://habrahabr.ru/post/206802/

Aleh
10.02.2017
23:19:04
А, прикольно да)

Sergey
10.02.2017
23:19:29
но я часто нарушаю этот принцип про "не более двух зависимостей"
точнее "не более двух атрибутов"
у меня есть сущости в которых по 20 атрибутов
в целом... там столько не надо и я сейчас это понимаю... но уже поздно)
оно работает, даже в целом не сказать что боль

Google

Sergey
10.02.2017
23:20:25
планирую 5 полей вынести в другой объект но....
в целом да, если я заверну там все вещи в отдельные объекты у меня всеравно останется где-то 6 атрибутов и код в целом станет намного чище
но лень

Rodion
10.02.2017
23:22:13
а маппить в доктрину в этом случае легко? вопрос в другой чатик должен быть, но он мелкий)

Aleh
10.02.2017
23:22:46
Доктрина наверное это добро и сгенерила))

Rodion
10.02.2017
23:23:22
я просто тоже думал над этим, но не дошло до дела, т.к. издалека задумался о доктрине и забил

Aleh
10.02.2017
23:24:06
А в случае с vo, она ж вроде до сих пор страдает с nullable

Rodion
10.02.2017
23:24:19
я уже писал в тот чатик - энтити ORMки != доменная модель

Aleh
10.02.2017
23:24:40
Нуу

Admin
ERROR: S client not available

Rodion
10.02.2017
23:24:42
это ведь так?)

Aleh
10.02.2017
23:24:45
Обычно нет смысла
В таком делении
Т.е. если у тебя реально доктрина ограничитель, то ок
Можешь отдельно мапить

Rodion
10.02.2017
23:25:24
ну у моей модели нет id, к примеру
т.к. это поле относится к ORM

Aleh
10.02.2017
23:26:35
А поскольку мы объект восстанавливаем, то ссылки языка как уникальность юзать не выйдет
Плюс в разных аггрегатах лучше держать не прямые ссылки, а именно id

Google

Aleh
10.02.2017
23:27:39
Правило: за одну транзакцию меняем один аггрегат

Rodion
10.02.2017
23:31:33
а если возникла необходимость переехать с DataMapper на ActiveRecord, например?

Aleh
10.02.2017
23:34:05
А сущность продолжает ничего не знать)
Вообще под id если упарываться надо пилить отдельный класс под аггрегат, который заворачивает uuid

Rodion
10.02.2017
23:36:37
я рассуждаю просто в рамках того, возможно ли отделить доменную логику от ORM
и соответственно кейсы выдумываю разные

Aleh
10.02.2017
23:37:36
Дата маппер и предполагает разделение, ты типа вначале сделал свой домен, а потом поставил доктрину/гибернейт, вжух и все персистентно

Sergey
10.02.2017
23:39:40
ну то есть все сильно зависит от реализации
использовать доктрину тупо как DTO между базой и моделью чет как-то меня не радует. Лучше буду dao юзать на каком-нибудь крутом квери билдере

Aleh
10.02.2017
23:40:49

Rodion
10.02.2017
23:40:56
я все понял, спасибо

Sergey
10.02.2017
23:41:14

Aleh
10.02.2017
23:41:33
?
Ну какая разница потом в дао все прокинуть или в dto?

Sergey
10.02.2017
23:41:55
ну то есть та же доктрина просто кастомные гидраторы)
и намного проще
возможно с unit-of-work-ами
(не одним универсальным а специализированными под агрегаты)
каждому агрегату свой юнит ов форк