Compartir a través de


Evite el exceso de herencias

Actualización: noviembre 2007

     TypeName

AvoidExcessiveInheritance

Identificador de comprobación

CA1501

Category

Microsoft.Maintainability

Cambio problemático

Motivo

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 dentro del mismo módulo.

Cómo corregir infracciones

Para corregir una infracción de esta regla, derive el tipo de un tipo base con menos 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 {}
}