Photo by Frédéric Barriol on Unsplash
Code Smell 180 - BitWise Optimizations
Bitwise operators are faster. Avoid these micro-optimizations
TL;DR: Don't use bitwise operators unless your business model is bitwise logic.
Problems
Readability
Clevereness
Premature Optimization
Maintainability
Bijection Violation
Solutions
- Improve readability
Context
Some clever programmers solve problems we don't have.
We should optimize code based on evidence and use the scientific method.
We should benchmark only if necessary and improve code only if really necessary and bear the cost of changeability and maintainability.
Sample Code
Wrong
const nowInSeconds = ~~(Date.now() / 1000)
Right
const nowInSeconds = Math.floor(Date.now() / 1000)
Detection
[X] Semi-Automatic
We can tell our linters to warn us and manually check if it is worth the change.
Exceptions
- Real-time and mission-critical software.
Tags
- Premature Optimization
Conclusion
If we find this code in a pull request or code review, we need to understand the reasons. If they are not justified, we should do a rollback and change it to a normal logic.
Relations
More Info
Disclaimer
Code Smells are just my opinion.
Credits
Photo by Frédéric Barriol on Unsplash
Original Article Here.
Watch the little things; a small leak will sink a great ship.
Benjamin Franklin
This article is part of the CodeSmell Series.