Делаю проект на архитектуре: controller ->service (use case) -> repository
Пытаясь следовать SOLID делаю для сервисов и репозиториев интерфейсы.
Однако в самой разработке это довольно мешает:
1) Нельзя быстро перейти на класс в IDE нажав на метод (переходит на interface, п.с. знаю можно прописать @var).
2) Банально больше кода за счет файлов интерфейсов.
3) На 95% уверен, что не будет массового жонглирования реализациями. Если вообще будет.
И вот назревает вопрос, а стоит ли? Если когда-то нужно будет сделать декоратор, жонглировать реализациями и т.д. - то просто отрефаторить и ввести интерфейс и опять же - только там, где он нужен.
Сейчас же у меня интерфейс ради интерфейса, усложение кода ради усложения. Принцип Kiss плачет в сторонке.
Любая архитектура это прежде всего здравый смысл и вас под дулом пистолета никто не заставляет её делать. Если в вашем проекте интерфейсы мешают, не используйте их. Я думаю за это еще не сажают.
Думается что "Принцип разделения интерфейсов" (а скорее всего вы говорите об этом, раз упоминаете SOLID) не подразумевает писать интерфейс под каждый сервис. Интерфейсы вы пишете по мере необходимости, а не потому что SOLID существует I.
И вот назревает вопрос, а стоит ли?
Конечно же не стоит.
Если когда-то нужно будет сделать декоратор, жонглировать реализациями и т.д. - то просто отрефаторить и ввести интерфейс и опять же - только там, где он нужен.
Все верно, там где нужен.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости