Const declares something to be constant. Can it mutate?
TL;DR: Don't rely on languages cheating about directives.
-
Unexpected side effects
-
Accidental complexity
-
Use better languages
-
Use spread operator
const array = [1, 2];
array.push(3)
// array => [1, 2, 3]
// Wasn't it constant ?
// constant != immutable ?
const array = [1, 2];
const newArray = [...array, 3]
// array => [1, 2] Didn't mutate
// newArray = [1, 2, 3]
Since this is a "language feature", we can explicitly forbid it.
-
Mutability
-
JavaScript
We should always favor immutability on our designs and take extra care with side effects.
Code Smell 116 - Variables Declared With 'var'
Code Smell 127 - Mutable Constants
Correctness is clearly the prime quality. If a system does not do what it is supposed to do, then everything else about it matters little.
Bertrand Meyer
Software Engineering Great Quotes
This article is part of the CodeSmell Series.