Assertions, Preconditions, Postconditions and invariants are our allies to avoid invalid objects. Avoiding them leads to hard-to-find errors.
Problems
- Consistency
- Contract breaking
- Hard to debug
- Bad cohesion
Solutions
- Create strong preconditions
- Raise exceptions
- Fail Fast
- Defensive Programming
Examples
Constructors are an excellent first line of defense
Anemic Objects lack these rules.
Sample Code
Wrong
Right
Detection
- It's difficult to find missing preconditions, as long with assertions and invariants.
Tags
- Consistency
Conclusion
Always be explicit on object integrity.
Turn on production assertions.
Even if it brings performance penalties.
Data and object corruption is harder to find.
Fail fast is a blessing.
%[https://mcsee.hashnode.dev/fail-fast]
More info
Relations
Credits
Photo by Jonathan Chng on Unsplash
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
%[https://mcsee.hashnode.dev/software-engineering-great-quotes]
Discussion (0)