Booleans should be just True and false
TL;DR: Don't do magic castings to boolean. You will regret on a friday night.
Problems
Hiding Errors
Accidental complexity coupled to one particular language.
Readability
Difficulty to hop among languages.
Solutions
Be explicit.
Work with booleans for boolean conditions. Not integers, not nulls, not strings, not lists. Just booleans.
Sample Code
Wrong
virus = ['MERS', 'SARS']
vaccines = []
if vaccines:
print ("let's get vaccinated")
else:
print ("We have no vaccines yet. Keep researching")
if virus:
print ("There are some virus around. Take extra care")
else:
print ("We are free to get out. Not masks are necessary")
#equivalent
if not vaccines:
print ("We have no vaccines yet. Keep researching")
else:
print ("let's get vaccinated")
if not virus:
print ("We are free to get out. Not masks are necessary")
else:
print ("There are some virus around. Take extra care")
Right
if len(vaccines) == 0:
print ("We have no vaccines yet. Keep researching")
else:
print ("Let's get vaccinated")
if len(virus) == 0:
print ("We are free to get out. Not masks are necessary")
else:
print ("There are some virus around. Take extra care")
Detection
This is a language feature. Some strict languages show warnings with this magic wizardry.
Tags
Coercions
Primitive
Conclusion
Some languages encourage doing some magic abbreviations and automatic castings. This is a source of errors and a Premature Optimization warning.
We should always be as explicit as possible.
Relations
Code Smell 69 - Big Bang (JavaScript Ridiculous Castings)
Maxi Contieri ・ May 4 '21
More Info
It is not the language that makes programs appear simple. It is the programmer that make the language appear simple!
Robert Martin
Software Engineering Great Quotes
Maxi Contieri ・ Dec 28 '20
This article is part of the CodeSmell Series.
How to Find the Stinky parts of your Code
Maxi Contieri ・ May 21 '21
Last update: 2021/07/07