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