Constants
A constant is defined as a variable that can't be changed.
Constants are in ALL_UPPERCASE_WITH_UNDERSCORES (capitalized snake case)
Constants always have static final
Constants can be macros or const
variables. It is highly recommended to make constants constexpr
and inline
as well.
If using a macro as a constant, always prefix it with an underscore afterwards. This prefix should be unique to your project.
Functional macros follow the same rules as a normal constant. They must also be verbs.
Functional macros with multiple lines must be wrapped in a do...while
block
REASONING: See this post for the do...while rule
Global Constants
Try to avoid non-constant global variables.
REASONING: One of the biggest factors to spaghetti code are global variables. For example, look at this code:
This code is a prime example of how spaghetti code is formed. doSomething()
now affects other classes and variables, so that can cause confusion to anyone using doSomething()
as to why the global constant has changed it's value!
The better way to do the above code that isn't a delicious italian product is like this:
This new technique produces completely identical code, adds more versality as now doSomething()
can be used anywhere, and reduces confusion. All because you got rid of global constants!
Magic Constants
A magic constant is a literal in your code that doesn't have any meaning or explanation.
Instead of embedding literals into code, create a constant at the top of the file to reduce spatghetti code and allow for more configurability.
You can use #define
or const constexpr
constants.
BAD:
GOOD:
Last updated