Sdílet prostřednictvím


CA1501: Vyhněte se nadměrné dědičnosti

TypeName

AvoidExcessiveInheritance

CheckId

CA1501

Kategorie

Microsoft.Maintainability

Narušující změna

Narušující

Příčina

Typ je více než čtyři úrovně hluboko v hierarchii dědičnosti.

Popis pravidla

Hluboce vnořené hierarchie typů může být obtížné sledovat, pochopit a udržovat.Toto pravidlo omezuje analýzy na hierarchie ve stejném modulu.

Jak vyřešit porušení

Pro opravení porušení tohoto pravidla, je nutné odvodit typ ze základního typu, který je méně zanořený v hierarchii dědičnosti, nebo eliminovat některé zprostředkující základní typy.

Kdy potlačit upozornění

Upozornění tohoto pravidla lze bezpečně potlačit.Nicméně, kód může být obtížné udržovat.Je třeba si všimnout, že podle viditelnosti základních typů, řešení porušení tohoto pravidla může vytvořit narušující změny.Například, odebrání veřejných základních typů je narušující změna.

Příklad

Následující příklad ukazuje typ, který toto pravidlo porušuje.

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