Compartir a través de


CA1501: Evite una herencia excesiva

Nombre de tipo

AvoidExcessiveInheritance

Identificador de comprobación

CA1501

Categoría

Microsoft.Maintainability

Cambio problemático

Causa

Un tipo tiene más de cuatro niveles de profundidad en su jerarquía de herencia.

Descripción de la regla

Las jerarquías de tipos con demasiados niveles de anidación pueden resultar difíciles de seguir, comprender y mantener. Esta regla limita el análisis a las jerarquías que se encuentran en el mismo módulo.

Cómo corregir infracciones

Para corregir una infracción de esta regla, derive el tipo de un tipo base que tenga menor profundidad en la jerarquía de herencia, o bien elimine algunos de los tipos base intermedios.

Cuándo suprimir advertencias

Es seguro suprimir una advertencia de esta regla. Sin embargo, el código podría ser más difícil de mantener. Tenga en cuenta que, según la visibilidad de los tipos base, al resolver infracciones de esta regla, se podrían crear cambios problemáticos. Por ejemplo, quitar los tipos base públicos constituye un cambio problemático.

Ejemplo

El siguiente ejemplo muestra un tipo que infringe la regla.

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