Photo by Aaron Burden on Unsplash
Code Smell 202 - God Constant Class
Constants should be together to find them easily
TL;DR: Don't define too many unrelated constants in the same class. Don't pile up the junk together.
Problems
Bad Cohesion
High Coupling
Magic Numbers
Single Responsibility principle violation
Solutions
- Break the contents following Real World responsibilities using the MAPPER.
Context
This is a special case of a God Object restricted only to constant definitions.
The repository can be a class, file, or JSON.
Sample Code
Wrong
public static class GlobalConstants
{
public const int MaxPlayers = 10;
public const string DefaultLanguage = "en-US";
public const double Pi = 3.14159;
}
Right
public static class MaxPlayersConstants
{
public const int MaxPlayers = 10;
}
public static class DefaultLanguageConstants
{
public const string DefaultLanguage = "en-US";
}
public static class MathConstants
{
public const double Pi = 3.14159;
}
Detection
[X] Semi-Automatic
We can tell our linters to warn us of too many constants' definitions against a preset threshold.
Tags
- Coupling
Conclusion
Finding correct responsibilities is one of our primary tasks when designing software.
Relations
More Info
Disclaimer
Code Smells are my opinion.
Credits
Photo by Aaron Burden on Unsplash
If someone says their code was broken for a couple of days while they are refactoring, you can be pretty sure they were not refactoring.
Martin Fowler
This article is part of the CodeSmell Series.