CA1501: 継承を使用しすぎないでください
TypeName |
AvoidExcessiveInheritance |
CheckId |
CA1501 |
カテゴリ |
Microsoft.Maintainability |
互換性に影響する変更点 |
あり |
原因
型が、その継承階層内の 5 つ以上深いレベルにあります。
規則の説明
深いレベルで入れ子にされた型の確認、理解、および保守は困難です。 この規則は、分析を同じモジュール内の階層に限定します。
違反の修正方法
この規則違反を修正するには、継承階層内でより浅いレベルの基本型から型を派生させるか、中間の基本型をいくつか削除します。
警告を抑制する状況
この規則による警告を抑制しても安全です。 ただし、コードの管理が難しくなる場合があります。 基本型の参照可能範囲によっては、この規則違反の修正が互換性に影響を与える可能性があるので、注意してください。 たとえば、パブリックな基本型を削除することは、互換性に影響を与える変更点です。
使用例
この規則に違反する型を次の例に示します。
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 {}
}