Duplication is cheaper than using the wrong abstraction.

Duplication is cheaper than using the wrong abstraction. Rushing to abstract away a repeated pattern of code is similar to premature optimisation.

If you find yourself passing parameters and adding conditional paths through shared code, the abstraction is incorrect.