Follow

# .css-ecb9sr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:16rem;}

Follow

Photo by Aaron Burden on Unsplash

# Code Smell 202 - God Constant Class

## Constants should be together to find them easily

Maxi Contieri⭐⭐⭐
·Mar 18, 2023·

• Problems
• Solutions
• Context
• Sample Code
• Detection
• Tags
• Conclusion
• Relations
• Disclaimer
• Credits

TL;DR: Don't define too many unrelated constants in the same class. Don't pile up the junk together.

# Problems

• High Coupling

• Magic Numbers

• Single Responsibility principle violation

# Solutions

1. 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.

• Coupling

# Conclusion

Finding correct responsibilities is one of our primary tasks when designing software.

Medium

# 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