Skip to content

Latest commit

 

History

History
108 lines (61 loc) · 2.98 KB

File metadata and controls

108 lines (61 loc) · 2.98 KB

Code Smell 145 - Short Circuit Hack

Code Smell 145 - Short Circuit Hack

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 😃

  1. Convert short circuits 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
// Doesn't value second statement
// Unless the first one is true

functionDefinedOrNot && functionDefinedOrNot();

// in some languages undefined works as a false
// If functionDefinedOrNot is not defined doesn't
// raise an error 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 🏷️

  • IFs

Level 🔋

[X] Intermediate

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

Code Smell 06 - Too Clever Programmer

Code Smell 149 - Optional Chaining

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


This article is part of the CodeSmell Series.

How to Find the Stinky Parts of Your Code