Don't use boolean evaluation as a readability shortcut
TL;DR: Don't use Boolean comparison for side effect functions.
-
Readability
-
Side Effects
- Convert short circuits into IFs
Smart programmers like to write hacky and obscure code even when there is no strong evidence for this improvement.
Premature optimization always hurts readability.
userIsValid() && logUserIn();
// this expression is short circuit
// Does not value second statement
// Unless the first one is true
functionDefinedOrNot && functionDefinedOrNot();
// in some languages undefined works as a false
// If functionDefinedOrNot is not defined does
// not raise an error and neither runs
if (userIsValid()) {
logUserIn();
}
if(typeof functionDefinedOrNot == 'function') {
functionDefinedOrNot();
}
// Checking for a type is another code smell
[X] Semi-Automatic
We can check if the functions are impure and change the short circuit to an IF.
Some actual linters warn us of this problem
- Premature Optimization
Don't try to look smart.
We are not in the 50s anymore.
Be a team developer.
Code Smell 140 - Short Circuit Evaluation
Code Smell 06 - Too Clever Programmer
Code Smell 149 - Optional Chaining
Photo by Michael Dziedzic on Unsplash
A computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match.
Bill Bryson
Software Engineering Great Quotes
This article is part of the CodeSmell Series.