Skip to content

Latest commit

 

History

History
103 lines (59 loc) · 2.79 KB

File metadata and controls

103 lines (59 loc) · 2.79 KB

Code Smell 107 - Variables Reuse

Code Smell 107 - Variables Reuse

Reusing variables makes scopes and boundaries harder to follow

TL;DR: Don't read and write the same variable for different purposes

Problems

  • Readability

  • Hidden problems

Solutions

  1. Don't reuse variables

  2. Extract Method to isolate scopes

Context

When programming a script it is common to reuse variables.

This leads to confusion and makes debugging harder.

We should narrow the scope as much as possible.

Sample Code

Wrong

// print line total
double total = item.getPrice() * item.getQuantity();
System.out.println("Line total: " + total);

// print amount total 
total = order.getTotal() - order.getDiscount();
System.out.println( "Amount due: " + total);

// 'total' variable is reused

Right

function printLineTotal() {
  double lineTotal = item.getPrice() * item.getQuantity();
  System.out.println("Line total: " + lineTotal);
}

function printAmountTotal() {
  double ammountTotal = order.getTotal() - order.getDiscount();
  System.out.println( "Amount due: " + ammountTotal);
}

Detection

[X] Automatic

Linters can use the parse tree to find variable definition and usages.

Tags

  • Readability

Conclusion

Avoid reusing variable names. Use more specific and different names.

Relations

Code Smell 03 - Functions Are Too Long

Code Smell 154 - Too Many Variables

More Info

Refactoring 002 - Extract Method

Credits

Photo by Sigmund on Unsplash


Simplicity before generality, use before reuse.

Kevlin Henney

Software Engineering Great Quotes


This article is part of the CodeSmell Series.

How to Find the Stinky Parts of your Code