@oop_ru

Страница 55 из 785
Sergei
11.01.2017
08:01:55
в которой за бонус скорости и асинхронности ты платишь памятью

python весь immutable

ну "почти весь"

Evgeniy
11.01.2017
08:02:47
реакт вон на js тоже на этом базируется под копотом, говорят)

Google
Evgeniy
11.01.2017
08:03:51
имхо в php лучше оставить ValueObject а вот всякие сервисы вполне не плохо делать без side эффектов

типо имутабельные, на самом деле не делать сэтеров и все передавать аргументами в метод)))

ну и пару зависимостей в конструктор которые точно используются почти всегда)

это опять же имхо

Evgeniy
11.01.2017
08:06:52
например UserService

очвидно должен уметь заводить нового пользователя

по username, password и тд это аргументы метода

а вот работать с бд, это в конструкторе, туда или pdo, или entityManager в зависимости от того что в приложение используется

da horsie
11.01.2017
08:08:32
понял

Evgeniy
11.01.2017
08:08:39
это мое имхо

не факт что правильное

da horsie
11.01.2017
08:08:50
т.е. получается просто соглашение, не жестко заданные правила

Google
Evgeniy
11.01.2017
08:09:06
компромис скорей)

da horsie
11.01.2017
08:09:21
в смысле, что сеттеры все же есть, но мы их договорились не использовать за пределами модуля

Sergei
11.01.2017
08:09:34
теперь я не понял

Evgeniy
11.01.2017
08:09:40
ага я тоже, перестал понимать)

Sergei
11.01.2017
08:09:44
как оно после этого immutble?

da horsie
11.01.2017
08:10:16
короче

исходный вопрос

Sergei
11.01.2017
08:10:26
давай

(а то я запутался)

da horsie
11.01.2017
08:10:37
беру и всем моделям говорю: "нельзя вилкой"

т.е. нельзя сеттеры

Evgeniy
11.01.2017
08:10:42
как оно после этого immutble?
сервис immutable так как нет публичных сеттеров меняющих аргументы переданные конструктору

данные переданные в конструктор не меняем

da horsie
11.01.2017
08:11:03
как это может повлиять на архитектуру проекта в целом?

Evgeniy
11.01.2017
08:11:07
через публичные методы

Sergei
11.01.2017
08:11:36
как это может повлиять на архитектуру проекта в целом?
тебе на каждый чих придется создавать новый экземпляр объекта

Evgeniy
11.01.2017
08:11:49
т.е. нельзя сеттеры
имхо не лучшая идея но попробуй если время есть)

Evgeniy
11.01.2017
08:12:01
лучше 1 раз увидеть чем 100 раз услышать)

Sergei
11.01.2017
08:12:28
или следовать CQRS
я пошел по второму кругу перечитывать его, ибо я похоже что-то упустил

Google
Aleh
11.01.2017
08:17:17
насколько бредовой выглядит идея сделать все модели immutable? а сеттеры заменить на что-то вроде withProperty('new value'): self
ValueObject удобно делать immutable, потому что он определяется только своими значениями

несколько объектов спокойно могут ссылаться на один и тот же vo

с сущностями сложнее, если они immutable, то ссылки из других сущностей будут не на объекты, а только на id, получать объекты каждый раз для общения надо заново, плюс при изменении надо не забывать их словить и заперсистить

в cqrs read-model это не доменный объект, а что-то уровня dto + finder к нему

доменная модель это write model

da horsie
11.01.2017
08:19:28
Понял

То есть cqrs это не совсем про мой случай

Aleh
11.01.2017
08:20:47
а сервисы immutable потому что не имеют состояния... Ну да)

например UserService
не надо так называть сервисы(

Evgeniy
11.01.2017
09:00:40
не надо так называть сервисы(
а как называют в вашей религии ?

Serivce часть namespace ?)

Evgeniy
11.01.2017
09:01:22
Здесь же все ООП, ORM, DDD, SOLID, CORS

причем наверно каждый по своему понимает эти термины)

finkel
11.01.2017
09:02:54
а кто-то не понимает ?

?
11.01.2017
09:05:33
Вы продолжайте, мы тут сидим, молчим , гуглим

Evgeniy
11.01.2017
09:06:20
Ну тогда mvc, тут довольно много всего можно нагуглить)

работать надо(

?
11.01.2017
09:07:15
тру

Google
finkel
11.01.2017
09:08:23
тру
обнимемся

но у меня хоть часть того, что вы здесь обсуждаете в проекте, вроде.

Dmitriy
11.01.2017
09:09:32
о. у него новая картинка . спс.

Admin
ERROR: S client not available

Aleh
11.01.2017
09:25:32
а как называют в вашей религии ?
зачем мне навязывать свою религию, если я могу указать на проблемы твоей :3 Где заканчивается ответственность UserService? Какие методы там должны быть?

Evgeniy
11.01.2017
09:26:00
где заканчивается там и заканчивается)

это все зависит от задачи)

Aleh
11.01.2017
09:26:24
как ты понимаешь, новый метод надо добавить в UserService или куда-то еще?

Evgeniy
11.01.2017
09:27:16
по фазе луны

это сарказм

если серьезно то зависит от ситуации и от доступных вариантов в приложение

просто строить архитектуру которую понимает только 1 человек в команде тоже не есть гуд

даже если она сделана по всем канонам

и лучшим практикам

Aleh
11.01.2017
09:28:40
ну так как новому человеку понять

чем занимается UserService

Evgeniy
11.01.2017
09:29:59
он предоставляет часто выполняемые действия пользователя в виде методов

чтобы вызвать из контроллера и не парится

или middleware или еще откуда

Aleh
11.01.2017
09:38:39
http://eax.me/kolkhoz-doctrine/

Google
F01134H
11.01.2017
09:43:04
http://eax.me/kolkhoz-doctrine/
интересный бложек, спасибо

Aleh
11.01.2017
09:46:56
http://eax.me/kolkhoz-doctrine/
норм оттуда коммент: "Технический долг (как и финансовый) это инструмент, который надо грамотно применять."

почему нет AppService где просто частые действия в приложении живут?

Evgeniy
11.01.2017
10:41:31
почему нет AppService где просто частые действия в приложении живут?
потому что в приложение не только пользователи

и делать god object не везде возможно

и нужно

тут опять же все от деталей ситуации зависит

Sergey
11.01.2017
10:42:46
> и делать god object не везде возможно ты хочешь сказать что god object это хоть когда-нибудь нужно?)

Evgeniy
11.01.2017
10:43:05
когда поджимают сроки например

Aleh
11.01.2017
10:43:13
потому что в приложение не только пользователи
т.е. методы UserService объединяет то, что они все работают с User?

когда поджимают сроки например
это отличный способ их завалить окончательно)

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