Size: a a a

Software Design/Architecture/Zen

2021 May 05

SB

Sergei Baikin in Software Design/Architecture/Zen
Так нам жкзамен проводить кажому девелоперу на эти знания перед тем как к оду допускать?
Или заложить это в дизайн системы?
Чтобы язык контрлировал и типы за нас?
источник

M

Maxim Kainov in Software Design/Architecture/Zen
Да как язык будет это контролировать, из той же ентити ты можешь куда хочешь обратиться
источник

M

Maxim Kainov in Software Design/Architecture/Zen
Если программисты не в состоянии это запомнить, то здесь уже, наверное, ничего поможет )
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
как если конструктор закрыт и глобалочек нету?
источник

M

Maxim Kainov in Software Design/Architecture/Zen
Статические методы
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
програмисты может и помнят
но обычно нам вот тут быстренько потом поправим на время...
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
глабалок по прeжнему нету значит статический метод тоже зависимостей иметь не может
Ну мол не вижу проблемы в создании типов Money::from() DateTime::from(). Мф же не зодим во вне мы внутри себя колупаемся
источник

M

Maxim Kainov in Software Design/Architecture/Zen
Да и как конструктор закрыт, его же можно открыть
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
синглтоном пахнуло
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
окей открыли конструктор для сущности
а толку?
Она же из базы полднимается там конструктор не используется
никакие зависмости не пролезут
я в этом плане
Контруктор работает только первый раз
далее сущность все больше не имеет права использовать оный
источник

M

Maxim Kainov in Software Design/Architecture/Zen
Ты можешь через метод передать зависимость
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Тут согласен
но по прежнему из вне полкчить доумп ко внутреностям ни кто не может
Сама сузность же контролирует какие хависимости так принять и что в них засунуть

Я это решаю тем что у сущности нельзя методы вызывать
Она только на сообщения (обычные структуры) реагирует
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Проблема в "размере энтити". Штуки типа "заказ" существуют между контекстами и как следствие ты будешь нарушать srp. Не потому что логика в сущностям и ты там дабл диспатчи юзаешь, а потому что у тебя одна штука знает и про платёжки и про доставку.

Если бы у тебя были сущности OrderPayment и OrderDelivery у которых из общего только айдишка - тут ещё можно про декомпозицию говорить.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Ну тоесть смысл в том что бы сущности были закрыты границами модулей. Что бы information hiding форсить, что бы управлять когнетивной сложностью
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Что бы в конечном итоге у тебя за разные куски могли разные люди отвечать и можно было бы с меньшим оверхэдом разработку скейлить
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Когда логика из сущностей "вытекает" и у тебя сеттеры и геттеры - это примерно тоже самое - если есть жирный order например. Просто в довесок мы ещё и потоки данных делаем неявными и хуй потом разберёшься кто кого дёргает и почему
источник

M

Maxim Kainov in Software Design/Architecture/Zen
Передавай в OrderPaymentService OrderPaymentData или OrderPaymentInterface
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
OrderPaymentService не имплементит OrderPaymentInterface?
источник

M

Maxim Kainov in Software Design/Architecture/Zen
Нет, интерфейс может ентити имплементить, например
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
а в чем разница между OrderPaymentService OrderPaymentData и OrderPaymentEntity?
источник