Ben Orenstein of thoughbot gave a talk about Refactoring in which he mentions using the NullObject pattern (or ‘Replace conditional with polymorphism’). I liked the idea, and it didn’t take long to come across a situation where it made sense.
This type of thing is pretty common, but it’s not DRY and it’s distracting:
If we have a NullReport, watch how easy this becomes:
This is nothing more than a cool OOP tool. I could get deeper in and make individual methods for any special messaging I want to present, like “No dates available.” There will be cases where method_missing causes issues, but it works in this particular scenario.