This left me with mixed feelings. On one hand, I see great value in single responsibility abstractions - they can improve readability (when looking at a single class that leverages them), and they can make components easier to test. On the other hand, I’ve coached a number of teammates over the years on SOLID principles and have continuously been met with push back or inappropriate abstractions (in my opinion).
A big lesson learned for me has been that there are multiple ways to do something - not everyone will have the same mental model as me. Going further, the more granular your mental model (I.e the more abstractions), the higher the chance that other teammates’ mental models will differ.
I still like abstractions for testability reasons - perhaps this is the right smell to check for when determining whether to split something up.
A big lesson learned for me has been that there are multiple ways to do something - not everyone will have the same mental model as me. Going further, the more granular your mental model (I.e the more abstractions), the higher the chance that other teammates’ mental models will differ.
I still like abstractions for testability reasons - perhaps this is the right smell to check for when determining whether to split something up.