Partager via


CA1501 : Éviter l'excès d'héritage

TypeName

AvoidExcessiveInheritance

CheckId

CA1501

Catégorie

Microsoft.Maintainability

Modification avec rupture

Oui

Cause

Un type est imbriqué de plus de quatre niveaux dans sa hiérarchie d'héritage.

Description de la règle

Les hiérarchies de type profondément imbriquées peuvent être difficiles à suivre, comprendre et gérer. Cette règle limite l'analyse aux hiérarchies contenues dans le même module.

Comment corriger les violations

Pour corriger une violation de cette règle, dérivez le type d'un type de base moins imbriqué dans la hiérarchie d'héritage ou supprimez certains des types de base intermédiaires.

Quand supprimer les avertissements

Il est possible de supprimer sans risque un avertissement de cette règle. Cependant, il pourrait être plus difficile de gérer le code. Notez qu'en fonction de la visibilité des types de base, la résolution des violations de cette règle peut créer des modifications avec rupture. Par exemple, la suppression des types de base publics est une modification avec rupture.

Exemple

L'exemple suivant présente un type qui enfreint la règle.

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