Code Smell 12 — Null
Programmers use Null as different flags. It can hint an absence, an undefined value, en error etc. Multiple semantics lead to coupling and errors.

Problems
- Coupling among the callers and the senders.
- Mismatch among the callers and the senders.
- If/Switch/Case Polluting.
- Null is not polymorphic with real objects. Hence Null Pointer Exception
- Null does not exist on real world. Thus it violates Bijection Principle
Solutions
- Avoid Null.
- Use NullObject pattern to avoid ifs.
- Use Optionals.
Exceptions
- APIs, Databases and external systems where NULL does exist.
Sample Code
Wrong
Right
Detection
Most linters can show null usages and warn us.
Tags
- Null
Conclusion
- Null is the billion dollar mistake. Yet, most program languages support them and libraries suggest its usage.
More info
I couldn’t resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.
Tony Hoare
This article is part of the CodeSmell Series.