TL;DR: Avoid using magic numbers without explanation. Their source is unknown, and we fear changing them.
Problems
Coupling
Low testability
Low readability
Solutions
Rename the constant with a meaningful and intention-revealing name.
Replace constants with parameters, allowing them to be mocked from the outside.
The constant definition should be separate from its usage.
Examples
- Algorithms Hyper Parameters
Sample Code
Wrong
fun energy(mass: Double) = (mass * 299792458).pow(2)
Right
typealias MetersPerSeconds = Int
// Using a specific unit of measure to avoid another code smell
const val LIGHT_SPEED: MetersPerSeconds = 299792458
fun energy(mass: Double) = (mass * LIGHT_SPEED).pow(2)
Stay updated with my latest thoughts and ideas by registering for my newsletter. Connect with me on LinkedIn or Twitter. Let's stay connected and keep the conversation going!
Top comments (0)