Kotlin Code Smell 1 - Constants and Magic Numbers
A method makes calculations with many numbers without describing their semantics

I've started to work as a software engineer at 2014, however, I started to write code at high-school.
My first language was Assembly, but still, I fall in love with the possibilities to make the computer to do as you wish, shortly after that I started to write in C.
Later on I studied a practical engineering in electricity, and during this time discovered that I preferred much more writing code than design electrical components.
As a result of this understanding I decided to switch and study bachelor degree in computer science in Reichman university, where the focus was of the Java language.
Today I'm working at SumUp using Kotlin, SpringBoot & Micronaut, Cassandra and Kafka
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!




