День двести второй. #BestPractices
Советы по разработке типов
2. Разработка абстрактных классов
❌ ИЗБЕГАЙТЕ определения открытых (
✅ ИСПОЛЬЗУЙТЕ защищённые (
✅ ИСПОЛЬЗУЙТЕ хотя бы один конкретный тип, наследующий от каждого абстрактного класса. Это помогает проверить дизайн абстрактного класса. Например,
Продолжение следует…
Источник: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/
Советы по разработке типов
2. Разработка абстрактных классов
❌ ИЗБЕГАЙТЕ определения открытых (
public
) или защищённых внутренних (protected internal
) конструкторов в абстрактных типах. Конструкторы должны быть открытыми, только если пользователям нужно будет создавать экземпляры типа. Поскольку вы не можете создавать экземпляры абстрактного типа, абстрактный тип с открытым конструктором неправильно спроектирован и вводит пользователей класса в заблуждение.✅ ИСПОЛЬЗУЙТЕ защищённые (
protected
) или внутренние (internal
) конструкторы в абстрактных классах. Защищенный конструктор является более распространенным и позволяет базовому классу выполнять собственную инициализацию при создании подтипов. Внутренний конструктор может использоваться для ограничения конкретных реализаций абстрактного класса только сборкой, определяющей класс.✅ ИСПОЛЬЗУЙТЕ хотя бы один конкретный тип, наследующий от каждого абстрактного класса. Это помогает проверить дизайн абстрактного класса. Например,
System.IO.FileStream
является реализацией абстрактного класса System.IO.Stream
.Продолжение следует…
Источник: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/