CA1501: Evite una herencia excesiva
Nombre de tipo |
AvoidExcessiveInheritance |
Identificador de comprobación |
CA1501 |
Categoría |
Microsoft.Maintainability |
Cambio problemático |
Sí |
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 {}
}