Skip to content

Latest commit

 

History

History
116 lines (70 loc) · 3.39 KB

File metadata and controls

116 lines (70 loc) · 3.39 KB

Code Smell 24 - Boolean Coercions

Code Smell 24 - Boolean Coercions

Booleans should be just True and False

TL;DR: Don't do magic castings to boolean. You will regret it on a Friday night.

Problems

  • Hiding Errors

  • Accidental complexity coupled with one particular language.

  • Readability

  • Difficulty hopping among languages.

  • IFs

Solutions

  1. Be explicit.

  2. Work with booleans for boolean conditions. Not integers, not nulls, not strings, not lists. Just booleans.

  3. Fail fast

Sample Code

Wrong

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")

Right

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")

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 06 - Too Clever Programmer

Code Smell 69 - Big Bang (JavaScript Ridiculous Castings)

More Info

Fail Fast


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.

How to Find the Stinky Parts of your Code