DEV Community

Yonatan Karp-Rudin
Yonatan Karp-Rudin

Posted on • Originally published at yonatankarp.com on

Kotlin Code Smell 1 - Constants and Magic Numbers

382byvsz5zmnq11ww9ar.png

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)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)