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.
Public Class Fruit
Protected PlantingSeason As String
' ...
End Class
Public Class Raspberry
Inherits Fruit
Protected Plantingseason As String ' Noncompliant
' ...
End Class
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
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.