Daniel Irvine on building software
1 June 2014
Uncle Bob’s PPP book has a great discussion of needless complexity, which can so easily sneak into our designs when we aren’t paying attention. A common symptom of this is having a set of related classes which are difficult to understand as a whole. Sometimes the entire group could be better expressed as one single class.
One way this can occur is by blindly following the Single Responsibility Principle, the well-known “first law” of object-development, which is really saying that each class should do one thing and one thing only. The PPP book defines it as each class should only have one reason to change.
If you always follow this advice you’ll end up with needless complexity in your design.
So how do you guard against it?
The PPP book has a great answer:
An axis of change is an axis of change only if the changes actually occur.
In other words, don’t try to anticipate where changes will occur since they might never happen. When the time comes that you have to make a change, then you can surmise that further changes are likely to happen across that same axis and you should split the responsibilities accordingly.