Code Smell 116 - Variables Declared With 'var'

Maxi Contieri - Feb 23 '22 - - Dev Community

Var, Let, Const: are all the same, aren't they?

TL;DR: Choose wisely your variable names, scope, and mutability.

Problems

Solutions

  1. Declare const all variables unless you need to change them

Context

Most languages don't need variable declarations.

Some other languages allow us to state mutability.

We should be strict and explicit with our declarations.

Sample Code

Wrong

var pi = 3.14
var universeAgeInYears = 13.800.000.000

pi = 3.1415 // no error
universeAgeInYears = 13.800.000.001 // no error
Enter fullscreen mode Exit fullscreen mode

Right

const pi = 3.14 //Value cannot mutate or change 
let universeAgeInYears = 13.800.000.000 //Value can Change

pi = 3.1415 // error. cannot define
universeAgeInYears = 13.800.000.001 // no error
Enter fullscreen mode Exit fullscreen mode

Detection

[X] Manual

With mutation testing by forcing a 'const' declaration, we can check if a value remains constant and be more declarative by explicitly enforcing it.

Tags

  • Mutability

  • Javascript

Conclusion

Readability is always very important.

We need to explicitly state our intentions and usages.

Relations

More Info

Credits

Photo by NASA on Unsplash


Just as it is a good practice to make all fields private unless they need greater visibility, it is a good practice to make all fields final unless they need to be mutable.

Brian Goetz


This article is part of the CodeSmell Series.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .