S4025 — Child class fields should not differ from parent class fields only by capitalization

Language
VB.NET
Type
Code smell
Severity
Critical
Tags
pitfall

Why is this an issue?

Having a field in a child class with a name that differs from a parent class' field only by capitalization is sure to cause confusion. Such child class fields should be renamed.

Noncompliant code example


Public Class Fruit

    Protected PlantingSeason As String

    ' ...

End Class

Public Class Raspberry
    Inherits Fruit

    Protected Plantingseason As String  ' Noncompliant

    ' ...

End Class

Compliant solution


Public Class Fruit

    Protected PlantingSeason As String

    ' ...

End Class

Public Class Raspberry
    Inherits Fruit

    Protected WhenToPlant As String

    ' ...

End Class

Or


Public Class Fruit

    Protected PlantingSeason As String

    ' ...

End Class

Public Class Raspberry
    Inherits Fruit

    ' Field removed, parent field will be used instead

End Class

Exceptions

This rule ignores same-name fields that are Shared in both the parent and child classes. It also ignores Private parent class fields and fields explicitly declared as Shadows, but in all other such cases, the child class field should be renamed.

↑ Back to top