Code Smell 202 - God Constant Class
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.
Subscribe to my newsletter
Read articles from Maxi Contieri directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Maxi Contieri
Maxi Contieri
I’m a senior software engineer loving clean code, and declarative designs. S.O.L.I.D. and agile methodologies fan.