I’m not sure that abstractions are always a good thing. Introducing abstractions too early can also lead to brittle, conditional and overly-complex design. A good rule of thumb is to only extract a piece of code once it has been repeated X (e.g. 3) times. :)