Size: a a a

Software Design/Architecture/Zen

2020 October 28

EE

Evgenii Evgenivich in Software Design/Architecture/Zen
В чем разница между pipelin'ом и декоратором?
К примеру транзакционное поведение можно реализовать через декоратор или же через pipeline как в mediatr. Или же валидация - декоратор или пайплайн.
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
А я тем временем меньше чем за часик ещё одну лямбду написал - с деплой/дестрой скриптами: typescript+awscli (поверх бойлерплейта с инит-конфигами). Потом за 10 минут сделал ей API gateway. В "холодном" режиме 900ms, в "прогретом" - от 100ms до 400ms.
Используемые сервисы AWS: API Gateway + Lambda + SSM
источник
2020 October 29

DE

Dmitry Eliseev in Software Design/Architecture/Zen
Сергей Предводителев
Класс для получения/сохранения агрегатов из хранилище называют, как правило, xxxRepository (например, PostRepository).

А класс, который достает из БД read-модели как называть лучше, xxxReadRepository ?
PostFetcher, PostReader, LastPostsQueryHandler, ...
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Dmitry Eliseev
PostFetcher, PostReader, LastPostsQueryHandler, ...
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
Класс для получения/сохранения агрегатов из хранилище называют, как правило, xxxRepository (например, PostRepository).

А класс, который достает из БД read-модели как называть лучше, xxxReadRepository ?
рид модельки обслуживают определенный юзкейс. Так и называй. LatestPosts, MostPopularPlaces.
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Sergey Protko
рид модельки обслуживают определенный юзкейс. Так и называй. LatestPosts, MostPopularPlaces.
По имени модельки получается...

Но если у меня есть класс, который возвращает последние посты и самые популярные посты и ещё какие-нибудь посты, но для всего этого одна общая рид модель (это я подразумеваю класс, который возвращается), то лучше как @elisdn предложил —
PostReader наверное.

$postReader->latestPosts()
$postReader->popularPosts()

А вот если у меня допустим будет отдельная моделька для постов пользователя, то UserPosts.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
По имени модельки получается...

Но если у меня есть класс, который возвращает последние посты и самые популярные посты и ещё какие-нибудь посты, но для всего этого одна общая рид модель (это я подразумеваю класс, который возвращается), то лучше как @elisdn предложил —
PostReader наверное.

$postReader->latestPosts()
$postReader->popularPosts()

А вот если у меня допустим будет отдельная моделька для постов пользователя, то UserPosts.
а что нам говорит про такие вещи SOLID? Какие у тебя будут причины для изменений у этого PostReader?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
будешь ли ты бесконечно добавлять методы в него нарушая open/close
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Бесконечно не буду... Исходил из того, что модельки одинаковые, зачем их плодить.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
не понимаю про "модельки одинаковые зачем плодить"
источник

SP

Sergey Protko in Software Design/Architecture/Zen
весьма удобно делать классы-менеджеры и прочие штуки с расплывчатыми границами ответственности. Нэйминг это сложно важно и заставляет думать зачем нужен класс и что он делает, где граница его зоны ответственности. Должен ли один и тот же класс заниматься разными выборками или же нам просто нужен один мэппер который резалт сэт разворачивает в dto и разные запросы в разных классах... а может быть будет $posts->that(new MostPopular())
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Последние посты и самые популярные посты возвращают объекты одного и того же класса Post (я этот класс пост рид-моделью называю)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
а я называю dto и в целом разницы нет 3 класса у тебя одно и то же dto возвращают или один.
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
С зоной ответственности сложный вопрос. Основная сложность с неймингом возникает как раз для класс с размытой зоной ответственности, когда в одном классе методы объединены только тем, что возвращают экземпляры одного и того же класса дто
источник

SP

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

SP

Sergey Protko in Software Design/Architecture/Zen
по сути нет никаких причин делать это одним классом
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Sergey Protko
по сути нет никаких причин делать это одним классом
Согласен, причин особых нет...
Только лишь объединить под одной крышей методы, чтобы не было куски классов, в которых по одному методу. А так хоть по какому то признаку объединили
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
Согласен, причин особых нет...
Только лишь объединить под одной крышей методы, чтобы не было куски классов, в которых по одному методу. А так хоть по какому то признаку объединили
ну вот я не понимаю этого стремления)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
они могут быть объеденены под одним неймспейсом)
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Стремление делать фасады - всё как банда 4х учила 😂
источник