Code Smell 69 — Big Bang (JavaScript Ridiculous Castings)
This handy operator is a troublemaker.

TL;DR: Don’t mix booleans with non-booleans.
Problems
- Not Declarative Code
- Hard to debug
- Magic Castings
- Accidental Complexity
Solutions
- Be Explicit
- Don’t mix Booleans with non-booleans.
- Fail Fast
- Be Smarter than your compiler.
- Stay loyal to the bijection.
Sample Code
Wrong
Right
Detection
Since this is a “feature” in some languages it would be hard to test. We can set programming policies or choose more strict languages.
We should detect ! !! usages in non-boolean objects and warn our programmers.
Tags
- Casting
- Coercion
- Javascript
Conclusion
Languages like JavaScript divide their whole universe into true or false values. This decision hides errors when dealing with non booleans.
We should be very strict and keep booleans (and their behavior), far away from non booleans.
Relations
More info
It is easier to write an incorrect program than understand a correct one.
Alan J Perlis
This article is part of the CodeSmell Series.