Kotlin Code Smell 1 - Constants and Magic Numbers

Photo by Dollar Gill on Unsplash

Kotlin Code Smell 1 - Constants and Magic Numbers

A method makes calculations with many numbers without describing their semantics

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!


More Information

Credits