I would do anything to have the duplication instead.
I would do anything to have the duplication instead.
You've just capitulated to the complexity and do whatever it takes.
I don't want to sound (too) condescending. I know how easy the best intentions can lead a project there. This job is hard.
The correct OO would be to think about what the check represent, maybe abstract it in a base interface with pure abstract methods and derive from that interface.
What you describe is what people without understanding of OO do when they come from a language without OO.
As if that doesn't happen with inheritance!
The dark pattern is using inheritance as an alternatve way of implementing composition. Anyone who thinks that "inheritance bad, composition good" is the proper response to this is probably as confused about the issue as those making the mistake in the first place.
To be clear, you are clearly not making that claim yourself, but you are invoking it to make a straw man argument.
That defeats the purpose of polymorphism.