Code Smell 195 - Yoda Conditions

Maxi Contieri - Feb 7 '23 - - Dev Community

Best is to put the expected value last, if conditions you want to write.

TL;DR: In a natural way, write your conditions.

Problems

  • Readability

  • The least surprise principle violation

Solutions

  1. Write your conditions with the expected value as the second.

  2. Name the variables accordingly.

Context

Most programmers write the variable or condition first and the test value second.

In fact, this is the correct order for assertions.

In some languages, this style is used to avoid accidental assignment instead of equality comparison, which can result in a logic error in the code.

Sample Code

Wrong

if (42 == answerToLifeMeaning) {
  // 
}
Enter fullscreen mode Exit fullscreen mode

Right

if (answerToLifeMeaning == 42) {
  // might be mistaken with answerToLifeMeaning = 42
}
Enter fullscreen mode Exit fullscreen mode

Detection

[X] Semi-Automatic

We can check for constant values on the first side of the comparison.

Tags

  • Readability

Conclusion

Reliable, direct, and clear be when conditions your writing.

Relations

Disclaimer

Code Smells are just my opinion.

Credits

Photo by Lia on Unsplash


Any man can make mistakes, but only an idiot persists in his error.

Marcus Cicero


This article is part of the CodeSmell Series.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .