@romaro

Создавать ли интерфейсы с единственной реализацией?

Есть достаточно интересный тред по этому поводу, но он с уклоном в Java.

Сейчас я создаю интерфейсы для всех классов, объекты которых могут передаваться в методы или храниться в полях. То есть вместо такой типизации:
SomeMethod(Some p) {...}

Стараюсь использовать контракт:
SomeMethod(ISome p) {...}

При этом ISome заведомо будет реализован только классом Some. Единственное, что в ISome я пропишу лишь публичные методы.

Имеет ли это практический смысл в C#?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Смысл имеет, например, для облегчения написания тестов.

Но если эта единственная реализация не мешает писать тесты, то можно и не заморачиваться с намазыванием абстракций.

Например нет никакого смысла вводить интерфейсы для DTO-шек.

В остальном тред для C# также актуален, за исключением того что оверхед таки есть, ибо добавляет лишней работы JIT-компилятору, тк ему сложнее будет решить, какие виртуальные вызовы можно девиртуализировать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы