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


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

Обновлен: Ноябрь 2007

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 {}
}