From the book "Refactoring"
As an alternative, I usually find that the "Introduce Null Object" refactoring results in simpler and more readable code overall. Perhaps not as concise
Sometimes you can simplify a conditional expression such as this:
class Foo {
void foo() {
...
}
};
...
x = 0;
...
if(x == 0) handleNullCondition(); //conditional expression
else x->foo();
with something like this:
class Foo {
void foo() {
...
}
};
class NullFoo {
void foo() {
handleNullCondition();
}
};
...
x = new NullFoo(); //instead of x = 0
...
x->foo(); //conditional expression goes away
//polymorphism handles it instead
So if I only have one check for class Foo being null, the code becomes bigger (I create a new class). But if I had many checks all over the place, it actually simplifies the code (a lot of if statements go away).
----- Original Message -----
From: Andrew R. Thomas-Cramer
To: Boost-Users@yahoogroups.com
Sent: Tuesday, May 14, 2002 7:11 AM
Subject: Re: [Boost-Users] boost::shared_ptr and NULL
----- Original Message -----
From: "Sean Shubin"