Code Smell 07 - Boolean Variables

Subscribe to my newsletter and never miss my upcoming articles

Using boolean variables as flags, exposes accidental implementation and pollutes the code with Ifs.

Problems

  • Extensibility

  • Comparison in some languages

Solutions

  • If Boolean maps to a real world entity is safe. Otherwise model as a State to favor Extensibility. This also follows Open/Closed Principle.

Examples

  • Flags

Exceptions

  • Real world true/false rules

Sample Code

Wrong

Detection

Automatic detection can warn for boolean usage but this can yield false positives.

Relations

Some languages have issues with boolean comparators.

0_QjZ76_c6hmi1UfXc[1].jpg

In these coupled with accidental complexity languages, booleans are a common error source.

Also Known as

  • Flag Abuser

Tags

  • Declarative

  • Primitive

Conclusion

Take extra care when declaring something boolean. Flags are difficult to maintain and extend. Learn more about the domain. Try migrating to state design pattern. Use polymorphism instead of ifs/switch/cases.

Credits

Photo by Phil Hearing on Unsplash

These tweets inspired this code smell:


This article is part of the CodeSmell Series.

No Comments Yet