А нужны ли интерфейсы?

206
02 января 2022, 23:00

Делаю проект на архитектуре: controller ->service (use case) -> repository

Пытаясь следовать SOLID делаю для сервисов и репозиториев интерфейсы.

Однако в самой разработке это довольно мешает:

1) Нельзя быстро перейти на класс в IDE нажав на метод (переходит на interface, п.с. знаю можно прописать @var).

2) Банально больше кода за счет файлов интерфейсов.

3) На 95% уверен, что не будет массового жонглирования реализациями. Если вообще будет.

И вот назревает вопрос, а стоит ли? Если когда-то нужно будет сделать декоратор, жонглировать реализациями и т.д. - то просто отрефаторить и ввести интерфейс и опять же - только там, где он нужен.

Сейчас же у меня интерфейс ради интерфейса, усложение кода ради усложения. Принцип Kiss плачет в сторонке.

Answer 1

Любая архитектура это прежде всего здравый смысл и вас под дулом пистолета никто не заставляет её делать. Если в вашем проекте интерфейсы мешают, не используйте их. Я думаю за это еще не сажают.

Answer 2

Думается что "Принцип разделения интерфейсов" (а скорее всего вы говорите об этом, раз упоминаете SOLID) не подразумевает писать интерфейс под каждый сервис. Интерфейсы вы пишете по мере необходимости, а не потому что SOLID существует I.

И вот назревает вопрос, а стоит ли?

Конечно же не стоит.

Если когда-то нужно будет сделать декоратор, жонглировать реализациями и т.д. - то просто отрефаторить и ввести интерфейс и опять же - только там, где он нужен.

Все верно, там где нужен.

READ ALSO
Как реализовать удаление записи при нажатии на кнопку?

Как реализовать удаление записи при нажатии на кнопку?

Есть цикл в которым выводятся посты:

268
Не удается скачать картинку товара через API МойСклад

Не удается скачать картинку товара через API МойСклад

Получаем список товаров https://onlinemoysklad

158
Ограничить файловые операции PHP в cPanel

Ограничить файловые операции PHP в cPanel

Необходимо ограничить папку, в которой может производить операции PHP код (в данном случае у одного сервера несколько владельцев)

169
Как в react определить массив в конструкторе одного класса, а обратиться к нему в другом классе?

Как в react определить массив в конструкторе одного класса, а обратиться к нему в другом классе?

Я хочу опредеить массив в 1 классе, а перебрать его методом map и вывести в другом классе1 класс

97