Agreed. I also think it's important to create abstractions that provide guarantees and/or maintain invariants. That way, your abstractions actually help you be more confident that your code is correct.
The point of abstraction isn't per se to reduce duplication--it's to make your code more straightforward and to make errors more obvious.
The point of abstraction isn't per se to reduce duplication--it's to make your code more straightforward and to make errors more obvious.