Re[10]: Breaking change
От: Doc Россия http://andrey.moveax.ru
Дата: 13.12.22 10:26
Оценка: +1 -1
Здравствуйте, karbofos42, Вы писали:

Doc>>- интерфейс более не абстракция.

Doc>>- интерфейс знает о реализациях, иначе откуда такая уверенность что дефолтный G() подходит для всех реализаций интерфейса.
Doc>>- если по какой-то причине G() гарантированно подходит для любой реализации, то он может вполне себе быть extension методом.
Doc>>- программист реализации может просто не заметить добавления G(), который будет не корректный для его реализации. Но в проекте IA.G() рано или поздно кто-то вызовет.
K>Все эти проблемы присущи и абстрактному классу, на который ниже предлагается заменить такие интерфейсы

Абстрактный класс не интерфейс. Он поддерживает какой-то уровень абстракции, но при этом обладает реализацией и состоянием. Поэтому пункты выше в большей части к нему не применимы.

K>В C# нет множественного наследования, поэтому примерно всё делают через интерфейсы и не всегда интерфейс можно заменить на абстрактный класс.

K>Такой вот костыль приделали, чтобы работало и плевать, что это идеологически неправильно и портит идею интерфейсов.

— Можно было бы реализовать не трогая интерфейсы через абстрактные классы.
— У фичи достаточно узкая область применения, чтобы говорить что это замена множественного наследования.
— Но раз вы сами говорите что обсуждаемая фича — костыль, то какой смысл дальше обсуждать. Хороший код/фичу костылем не назовут
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.