shlogg · Early preview
Maxi Contieri @mcsee1

Avoiding Private Methods With Overlapping Names In Parent Classes

Avoid using private methods in parent classes with names that child classes can use, as it leads to confusion and unexpected behavior. Use protected or abstract methods instead to maintain clear naming and avoid overlapping names.

When parent and child methods collide

TL;DR: Avoid using private methods in parent classes with names that child classes can use.

  
  
  Problems

The least surprise principle violation
Unexpected behavior and defects
Hidden dependencies
Limited extensibility
Code ambiguity
Open/Closed principle violation
Misleading design

  
  
  Solutions

Avoid hierarchies
Rename private methods
Maintain clear naming
Avoid overlapping names
Avoid protected methods
Subclassify for essential relations, not to reuse code


  
  
  Context

When you use the same method name in parent and child classes, you...