Code Smell 107 - Variables Reuse
Reusing variables makes scopes and boundaries harder to follow
Play this article
TL;DR: Don't read and write the same variable for different purposes
Problems
Readability
Hidden problems
Solutions
Don't reuse variables
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 );
// variable is reused
Right
function printLineTotal() {
double total = item.getPrice() * item.getQuantity();
System.out.println("Line total: " + total );
}
function printAmountTotal() {
double total = order.getTotal() - order.getDiscount();
System.out.println( "Amount due: " + total );
}
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
More Info
Credits
Simplicity before generality, use before reuse.
Kevlin Henney
This article is part of the CodeSmell Series.