Don't use boolean evaluation as a readability shortcut
TL;DR: Don't use Boolean comparison for side effect functions.
Problems
Readability
Side Effects
Solutions
- Convert short circuit into IFs
Context
Smart programmers like to write hacky and obscure code even when there is no strong evidence for this improvement.
Premature optimization always hurts readability.
Sample Code
Wrong
userIsValid() && logUserIn();
// this expression is short circuit
// Does not value second statament
// 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 erron and neither runs
Right
if (userIsValid()) {
logUserIn();
}
if(typeof functionDefinedOrNot == 'function') {
functionDefinedOrNot();
}
// Checking for a type is another code smell
Detection
[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
Tags
- Premature Optimizacion
Conclusion
Don't try to look smart.
We are not in the 50s anymore.
Be a team developer.
Relations
Code Smell 140 - Short Circuit Evaluation
Maxi Contieri ・ Jun 13 '22
Code Smell 149 - Optional Chaining
Maxi Contieri ・ Jul 16 '22
Credits
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
Maxi Contieri ・ Dec 28 '20
This article is part of the CodeSmell Series.