@oop_ru

Страница 95 из 785
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
избавься от них)
долго вспоминал про стратегию, в голове вертелось про OCP

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

Google
Sergey
10.02.2017
23:12:04
долго вспоминал про стратегию, в голове вертелось про OCP
одно из самых эффективных средств в борьбе с if-ми

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:15:08
Что значит на тест?
на тест кейс.

один конкретный тест кейс

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

Sergey
10.02.2017
23:16:08
Если объект требует инъекта 3 штук, то?
ну помечаю что "ну значит надо всю логику оттуда вынести и покрыть интеграционным"

и как только заканчиваю с этим удаляю тест

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, к примеру
На такие уступки можно пойти, ведь сущность должна иметь уникальное поле

А поскольку мы объект восстанавливаем, то ссылки языка как уникальность юзать не выйдет

Плюс в разных аггрегатах лучше держать не прямые ссылки, а именно 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
я уже писал в тот чатик - энтити ORMки != доменная модель
если ORM != доменная модель то тогда не надо юзать доктрину. Но если ты готов мириться с ограничениями вроде nullable embeddable (делать null objects лучше всеравно) то как бы проблем с этим нет и реализация сильно проще.

ну то есть все сильно зависит от реализации

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

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
Ну какая разница потом в дао все прокинуть или в dto?
эм.... я в dao буду гидрировать свои сущности)

ну то есть та же доктрина просто кастомные гидраторы)

и намного проще

возможно с unit-of-work-ами

(не одним универсальным а специализированными под агрегаты)

каждому агрегату свой юнит ов форк

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