The most used and (in)famous design pattern in the world is causing us great harm.
Problems
Coupling
Testability
Accidental implementation problems.
Multi threading issues.
Static methods polluting.
Object creation contract violation.
Bijection mismatch.
Memory issues.
Premature Optimization.
Code Smell 20 - Premature Optimization
Maxi Contieri ・ Nov 8 '20
Solutions
Avoid it.
Use contextual unique objects.
Benchmark object creation.
Examples
Database Access
Globals
Loggers
Helpers
Sample Code
Wrong
God is the archetypical singleton example.
Right
Detection
This is a design pattern. We should avoid it by policy.
We can add linter rules for patterns like 'getInstance()' so new developers cannot infect code with this anti-pattern.
Tags
- Globals
Conclusion
This is an historical mistake already acknowledged by the community. Nevertheless, lazy developers bring it again and again. We need to reach a consensus on its drawbacks.
Relations
Code Smell 18 — Static Functions
Maxi Contieri ・ Nov 6 '20
More info
Credits
Photo by Maria Teneva on Unsplash
The Diagram is Not the Model. The model is not the diagram. It is an abstraction, a set of concepts and relationships between them.
Eric Evans