Skip to main content

Command Palette

Search for a command to run...

Code Smell 83 - Variables Reassignment

Published
2 min read
Code Smell 83 - Variables Reassignment

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

  1. Define, use and dispose variables.

  2. 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();
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

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


This article is part of the CodeSmell Series.

Code Smells

Part 1 of 50

In this series, we will see several symptoms and situations that make us doubt the quality of our developments. We will present possible solutions. Most are just clues. They are no hard rules.

Code Smell 83 - Variables Reassignment