Code Smell 60 — Global Classes
Classes are handy. We can call them and invoke them any time. Is this good?

Problems
- Coupling
- Classes are global unless we use Namespaces.
- Name polluting
- Static Methods
- Static Constants
- Singletons
Solutions
- Use namespaces, module qualifiers or similar
- Avoid namespace polluting, keep the Global names as short as possible.
- Class single Responsibility is to create instances.
Sample Code
Wrong
Right
Detection
We can use almost any linter or create dependency rules searching for bad class references.
Tags
- Globals
Conclusion
We should restrict our classes to small domains and expose just facades to the outside. This greatly reduces coupling.
Relations
More info
Write shy code — modules that don’t reveal anything unnecessary to other modules and that don’t rely on other modules’ implementations.
Dave Thomas
This article is part of the CodeSmell Series.