Является ли хорошей практикой делать интерфейсы даже тогда, когда класс не планируется заменять?

Доброй ночи.
Речь о 2м и 5м принципах SOLID. Например, у меня есть класс A, который гарантированно будет один в программе, и получается, что классы, которые его используют, зависят от деталей, а не от абстракций (ведь у класса A нет интерфейса - зачем он, если класс один). Кроме того, класс А специально создан так, чтобы быть связующим звеном между классами меньшего уровня абстракции, которые уже могут быть заменяемы.

Стоит ли стремиться к полному соблюдению данных принципов, создавать интерфейс даже если он гарантированно будет реализован лишь единожды?

Заранее спасибо.
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
@kttotto
пофиг на чем писать
Нет, не надо. Не нужно усложнят проект там где это не требуется.
Есть правило первой пули: сначала Вы пишите максимально просто и только когда приходят первые изменения, которые требуют абстракции, тогда только Вы ее выделяете.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@ImSorry
В этой статье хорошо написано, когда нужен интерфейс и зачем он нужен
sergeyteplyakov.blogspot.com/2014/12/what-are-inte...
А от себя добавлю, что фанатичное придерживание принципов SOLID может привести к обратному, а именно увеличению сложности проекта.
Ответ написан
@red-barbarian
принцип инверсии - самый крутой принцип.
разработка начинается с головы. Т.е. если у вас задача проектировать программу, то вы начинаете строить ее с самого главного - ее бизнес логики. Вы не будете знать какие сущности логика будет использовать. Это возникнет из процесса. Поэтому, все что бизнес-логике нужно вы определяете интерфейсами.
В таком случае получится, разбиение логики и сущностей которые ее обслуживают.
из-за того, что первая меняется быстро и часто (по разным причинам, даже не зависящих от девелопера) это разбиение очень полезно. Главное, можно отдать разработку обслуживания другим людям, мы не в курсе библиотек которые будут применяться (и можем менять из), мы легко можем тестировать свою логику.
Примерно так.
Интерфейсы хорошо применять на границах слоев программы. Это дает возможность тестирования и разбиения.
Ответ написан
Комментировать
Maksclub
@Maksclub
maksfedorov.ru
Абстракция зло, но необходимое зло... если нет необходимости, то...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы