Incomplete objects cause lots of issues.
Concurrency inconsistencies between creation and essence setting.
- Pass the object's essence on creation
- Some persistence frameworks in static typed languages require an empty constructor.
- Stateless objects. Always better solution than static class methods.
Any linter can warn this (possible) situation.
Always create complete objects. Make their essence immutable to endure through time.
Every object needs its essence to be a valid one since inception.
Photo by Brett Jordan in Pexels
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.