Booleans should be just True and False
TL;DR: Don't do magic castings to boolean. You will regret it on a Friday night.
-
Hiding Errors
-
Accidental complexity coupled with one particular language.
-
Readability
-
Difficulty hopping among languages.
-
Be explicit.
-
Work with booleans for boolean conditions. Not integers, not nulls, not strings, not lists. Just booleans.
virus = ['MERS', 'SARS']
vaccines = []
if vaccines:
print ("let's get vaccinated")
else:
print ("There are no vaccines yet. Keep researching")
if virus:
print ("There are some virus around. Take extra care")
else:
print ("You are free to get out. Not masks are necessary")
# equivalent
if not vaccines:
print ("There are no vaccines yet. Keep researching")
else:
print ("let's get vaccinated")
if not virus:
print ("You are free to get out. Not masks are necessary")
else:
print ("There are some virus around. Take extra care")
if len(vaccines) == 0:
print ("There are no vaccines yet. Keep researching")
else:
print ("Let's get vaccinated")
if len(virus) == 0:
print ("You are free to get out. Not masks are necessary")
else:
print ("There are some virus around. Take extra care")
This is a language feature. Some strict languages show warnings with this magic wizardry.
-
Coercions
-
Primitive
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.
Code Smell 06 - Too Clever Programmer
Code Smell 69 - Big Bang (JavaScript Ridiculous Castings)
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
This article is part of the CodeSmell Series.