Size: a a a

Software Design/Architecture/Zen

2020 December 28

КГ

Константин Грачев... in Software Design/Architecture/Zen
У меня похоже кейсы не те, ибо что в случае с смс что с оплатой, я записываю лишь информацию о попытке запроса успешно/неуспешно.
Об успешности доставки/оплаты в этих кейсах от внешней системы ещё дополнительный callback обычно есть
источник

k

knopkod4v in Software Design/Architecture/Zen
Константин Грачев
Конкретно тут хотелось бы вместо 44 строки сразу получить сущность аргументом, а последние 3 строки убрать в метод переданной сущности. Сразу минус зависимость
по идее сущность для чтения получать как-то не оч (т.к. геттеры будут)
К тому же это интеграция с внешней системой - тебе, вполне вероятно, может понадобиться не только информация от того объекта, где родился ивент. Т.е. в бд всё равно сходить надо будет.
источник

КГ

Константин Грачев... in Software Design/Architecture/Zen
knopkod4v
по идее сущность для чтения получать как-то не оч (т.к. геттеры будут)
К тому же это интеграция с внешней системой - тебе, вполне вероятно, может понадобиться не только информация от того объекта, где родился ивент. Т.е. в бд всё равно сходить надо будет.
Можно вьюху сделать
источник

КГ

Константин Грачев... in Software Design/Architecture/Zen
Ну и тут не только чтение же
источник

k

knopkod4v in Software Design/Architecture/Zen
Константин Грачев
Ну и тут не только чтение же
для Sms только чтение
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
knopkod4v
по идее сущность для чтения получать как-то не оч (т.к. геттеры будут)
К тому же это интеграция с внешней системой - тебе, вполне вероятно, может понадобиться не только информация от того объекта, где родился ивент. Т.е. в бд всё равно сходить надо будет.
Главное чтобы геттеры ссылки не ввплевывали, через которые можно поменять стейт. Тогда ничего страшного в этом нет
источник

КГ

Константин Грачев... in Software Design/Architecture/Zen
knopkod4v
для Sms только чтение
Я же написал, что 3 последние строчки хотелось бы убрать в метод Sms
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
И главное чтобы геттеры были на данные, а не на структуру внутреннюю
источник

КГ

Константин Грачев... in Software Design/Architecture/Zen
Sms::send() -> $this->sends[] = new SmsSend(...)
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Тогда и тесты более стойкие, и те кто читает более защищены от случайных изменений
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Ну тоесть агрегаты которые только испускают ивенты и реагируют на команды- идеальные штуки для юнит тестов
источник

k

knopkod4v in Software Design/Architecture/Zen
Константин Грачев
Я же написал, что 3 последние строчки хотелось бы убрать в метод Sms
а нафига оно в Sms? Какие инварианты объекта Sms надо соблюдать, чтобы записать SmsSend или какие инварианты в Sms зависят от SmsSend? Выглядит как сеттер. Ему бы жить где-то отдельно
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
А как тестировать без геттеров?
источник

КГ

Константин Грачев... in Software Design/Architecture/Zen
knopkod4v
а нафига оно в Sms? Какие инварианты объекта Sms надо соблюдать, чтобы записать SmsSend или какие инварианты в Sms зависят от SmsSend? Выглядит как сеттер. Ему бы жить где-то отдельно
Никакие, но позволяет спрятать инфраструктуру $em->persist
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Лазить внутрь через рефлексию? Тогда тесты слишком хрупкие
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Dmitriy Tkachenko
Лазить внутрь через рефлексию? Тогда тесты слишком хрупкие
Норм)
источник

k

knopkod4v in Software Design/Architecture/Zen
Dmitriy Tkachenko
А как тестировать без геттеров?
вот как раз чтобы люди не лезли тестить с геттерами - геттеров лучше и избегать.
проверять поведение объекта, а него стейт (проверка через геттеры - та же самая проверка стейта)
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
knopkod4v
вот как раз чтобы люди не лезли тестить с геттерами - геттеров лучше и избегать.
проверять поведение объекта, а него стейт (проверка через геттеры - та же самая проверка стейта)
А как тытпротестируешь поведение? Например установку каких то параметров? Если это единственная реакция
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
На команду
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Этоточно не про тестирование поведения) а реализации
источник