Code Smell 152 - Logical Comment

Photo by Belinda Fewings on Unsplash

Code Smell 152 - Logical Comment

Temporary hacks might be permanent

Maxi Contieri
·Jul 24, 2022·

2 min read

Subscribe to my newsletter and never miss my upcoming articles

Play this article

Table of contents

  • Problems
  • Solutions
  • Context
  • Sample Code
  • Detection
  • Tags
  • Conclusion
  • Relations
  • Credits

TL;DR: Don't change code semantics to skip code.

Problems

  • Readability

  • Non-Intention Revealing

Solutions

  1. If you need a temporary hack, make it explicit

  2. 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.

 
Share this

Impressum

Technical Opinions are my own. I don't have the revealed truth.

Software Design is a creative activity. These are hints and not rigid rules.

I write on BackEnd Business Systems and OOP Design. My advice/experience might not suit other systems.

You can write me at info(at)maximilianocontieri.com