Поделиться через


CA1501: избегайте излишнего наследования

TypeName

AvoidExcessiveInheritance

CheckId

CA1501

Категория

Microsoft.Maintainability

Критическое изменение

Критическое изменение

Причина

Тип расположен глубже четырех уровней в иерархии наследования.

Описание правила

Глубокие иерархии вложенных типов трудно отслеживать, понимать и поддерживать. Данное правило ограничивает анализ для иерархий в одном модуле.

Устранение нарушений

Чтобы устранить нарушение данного правила, сделайте данный тип производным от базового типа, который располагается не так глубоко в иерархии наследования или удалите часть промежуточных базовых типов.

Отключение предупреждений

Отключение предупреждений о нарушении этого правила является безопасным. Тем не менее код может быть более сложным в обслуживании. Обратите внимание, что в зависимости от видимости базовых типов устранение нарушений данного правила может привести к критическим изменениям. Например, удаление открытых базовых типов является критическим изменением.

Пример

В следующем примере показан тип, который нарушает данное правило.

Imports System

Namespace MaintainabilityLibrary

   Class BaseClass
   End Class

   Class FirstDerivedClass
      Inherits BaseClass
   End Class

   Class SecondDerivedClass
      Inherits FirstDerivedClass
   End Class

   Class ThirdDerivedClass
      Inherits SecondDerivedClass
   End Class

   Class FourthDerivedClass
      Inherits ThirdDerivedClass
   End Class

   ' This class violates the rule.
   Class FifthDerivedClass
      Inherits FourthDerivedClass
   End Class

End Namespace
using System;

namespace MaintainabilityLibrary
{
   class BaseClass {}
   class FirstDerivedClass : BaseClass {}
   class SecondDerivedClass : FirstDerivedClass {}
   class ThirdDerivedClass : SecondDerivedClass {}
   class FourthDerivedClass : ThirdDerivedClass {}

   // This class violates the rule.
   class FifthDerivedClass : FourthDerivedClass {}
}