Variable reuse is something we see in big chunks of code.
TL;DR: Don't reuse variable names. You break readability and refactor chances and gain nothing but laziness.
Problems
-
Readability
-
Refactor chances
-
Missed Optimization
-
Mutability
-
Garbage Collection Missed Opportunities
Solutions
-
Define, use and dispose variables.
-
Keep your Definition, Usage and Destroy variables short.
Sample Code
Wrong
class Item: def __init__(self, name): self.name = name def taxesCharged(self): return 1; class Money: pass lastPurchase = Item('Soda'); # Do something with the purchase taxAmount = lastPurchase.taxesCharged(); # Lots of stuff related to the purchase # I drink the soda # I cannot extract method from below without passing # useless lastPurchase as parameter # a few hours later.. lastPurchase = Item('Whisky'); # I bough another drink taxAmount += lastPurchase.taxesCharged();
Right
class Item: def __init__(self, name): self.name = name def taxesCharged(self): return 1; class Money: pass def buySupper(): supperPurchase = Item('Soda'); # Do something with the purchase # Lots of stuff related to the purchase # I drink the soda return supperPurchase; def buyDrinks(): # I could extract method! # a few hours later.. drinksPurchase = Item('Whisky'); # I bough another drink return drinksPurchase; taxAmount = buySupper().taxesCharged() + buyDrinks().taxesCharged();
Detection
Many linters can warn us from reusing variables
Tags
- Readability
Conclusion
Reusing variables is a non-contextual copy and paste hint.
Relations

Code Smell 03 – Functions Are Too Long
Maxi Contieri ・ Oct 22 '20
More Info
Credits
Photo by Robby McCullough on Unsplash
Either way you look at it (DRY or laziness), the idea is the same: make your program flexible. When change comes (and it always does), you'll have a much easier time changing with it.
Chris Pine

Software Engineering Great Quotes
Maxi Contieri ・ Dec 28 '20
This article is part of the CodeSmell Series.

How to Find the Stinky parts of your Code
Maxi Contieri ・ May 21 '21
Last update: 2021/07/14