So, I’m pair programming C++ code with a client today and he makes an observation that makes me pause.
The well-structured, open-source code I’ve looked at typically has very few else
blocks. You might see a conditional test with a return statement if the conditional evaluates to true, but not many if/else
blocks.
(I’m quoting from memory…) Now, this may seem crazy at first, but one of the principles we teach at Object Mentor is the Single Responsibility Principle, which states that a class should have only one reason to change. This principle also applies to methods. More loosely defined, a class or method should do only one thing.
So, if a method has an if/else block, is it doing two (or more) things and therefore violating the SRP?
Okay, so this is a bit too restrictive (and the title was a bit of an attention grabber… ;). We’re not talking about something really evil, like premature optimization, after all!
However, look at your own if/else
blocks and ask yourself if maybe your code would express its intent better if you refactored it to eliminate some of those else
blocks.
So, is there something to this idea?