Photo by Belinda Fewings on Unsplash
Code Smell 152 - Logical Comment
Temporary hacks might be permanent
TL;DR: Don't change code semantics to skip code.
Problems
Readability
Non-Intention Revealing
Solutions
If you need a temporary hack, make it explicit
Rely on your source control system
Context
Changing code with a temporary hack is a very bad developer practice.
We might forget some temporary solutions and leave them forever.
Sample Code
Wrong
if (cart.items() > 11 && user.isRetail()) {
doStuff();
}
doMore();
// Production code
// the false acts to temporary skip the if condition
if (false && cart.items() > 11 && user.isRetail()) {
doStuff();
}
doMore();
if (true || cart.items() > 11 && user.isRetail()) {
// Same hack to force the condition
Right
if (cart.items() > 11 && user.isRetail()) {
doStuff();
}
doMore();
// Production code
// Either if we need to force or skip the condition
// we can do it with a covering test forcing
// real world scenario and not the code
testLargeCartItems() {}
testUserIsRetail() {}
Detection
[X] Semi-Automatic
Some linters might warn us of strange behavior.
Tags
- Comments
Conclusion
Separation of concerns is extremely important in our profession.
Business logic and hacks should always be apart.
Relations
Credits
Photo by Belinda Fewings on Unsplash
Thanks, Ramiro Rela for this tip
You might not think that programmers are artists, but programming is an extremely creative profession. It's logic-based creativity.
John Romero
This article is part of the CodeSmell Series.