Code Smell 13 — Empty Constructors
Incomplete objects cause lots of issues.
Problems
- Mutability
- Incomplete objects
- Concurrency inconsistencies between creation and essence setting.
- Setters
Solutions
- Pass the object’s essence on creation
Examples
- Some persistence frameworks in static typed languages require an empty constructor.
Exceptions
- Stateless objects. Always better solution than static class methods.
Sample Code
Wrong
Right
Detection
Any linter can warn this (possible) situation.
Tags
- Essence
- Incomplete
- Mutable
Conclusion
Always create complete objects. Make their essence immutable to endure through time. Every object needs its essence to be a valid one since inception.
Writing a class without its contract would be similar to producing an engineering component (electrical circuit, VLSI (Very Large Scale Integration) chip, bridge, engine…) without a spec. No professional engineer would even consider the idea.
Bertrand Meyer
This article is part of the CodeSmell Series.