Skip to main content

Tag: Code Design

Null objects for the win

So I’ve been watching a lot of OO refactoring screencasts and reading posts and I’m able to say I’ve implemented some of the advice I’ve heard. Life’s all about learning eh?

So the main example I want to talk about here is Null objects.

Null objects

In dynamic languages, and Ruby in particular1 the concept of the lack of something needs to be encapsulated. For example: you’re wrapping the database and no entry exists; what to you return? In Ruby it’s often nil but this is not great for app design. This nil will proliferate through your app causing errors in its wake (NoMethodError) and causing de-localised stacktraces. Another example is the concept of a guest user. How do you represent this? Subclass the normal User class? nil?! One way to combat this is to introduce Null Objects, where they look like a standard user but don’t respond to the methods in the same way.