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
Credits
Photo by Kurt Cotoaga on Unsplash
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.
Software Engineer💻 | Technical Writer ✍ | !(Chess GM)♟
I always felt that there is a huge gap when it comes to articles on software engineering in general
With you, Matt Moll & Mario Cervera coming i am glad those gaps now has been filled :)
Glad to hear this Apoorv! You can definitely expect more articles on Software Engineering coming from me 😉
Co-founder & CEO, Hashnode
Wow. This is a great series, mcsee. These will definitely help devs become 10x better. 🍻 Keep them coming.
Comments (4)