Другой инсайт, который возник у меня на Joker 2024 во время обмена опытом с коллегами. Уже довольно давно при создании репозиториев (если это не JPA), и сервисов в Spring, я всегда выделяю интерфейс. Даже если у него всего одна реализация.
Почему?
1. Потому что я так привык
2. В любой книге про паттерны вы встретите фразу о том, что "программировать надо на уровне интерфейсов, а не реализаций"
3. Если сервис занимает несколько экранов, бывает удобно посмотреть весь его публичный API на одном экране, просто зайдя в интерфейс.
Но есть и минусы:
1. Файлов становится в 2 раза больше без изменения функциональности.
2. Неудобная навигация в IDE (2 клика для перехода к реализации вместо одного).
3. Когда у нас нет интерфейса, Spring'у чуть проще находить бины.
Ну и я задумался, всегда ли эти плюсы перевешивают эти минусы? Например, навигацию приходится делать гораздо чаще, чем смотреть API целиком. Может, пришла пора пересмотреть практику обязательного выделения интерфейса?
А как принято делать у вас в команде?
Post #112
265

- 👍 9