Code Smell 232 - Reusable Code
25 November, 2023
17
17
0
Contributors
Don't Repeat Yourself. Don't Repeat Yourself
TL;DR: You can find missing abstractions by looking at repeated code
Problems
- DRY principle violation
- Maintainability
- Ripple Effect
Solutions
- Create the repeated code
- Introduce an abstraction
- Replace the references and point to the new abstraction
- Remove the duplication
Context
Repeated code is a symptom of missing abstractions.
This is natural in the learning process since we cannot foresee those abstractions.
Sample Code
Wrong
def calculate_area(length, width):
return length * width
def calculate_volume(length, width, height):
return length * width * height
Right
def calculate_area(length, width):
return length * width
def calculate_volume(length, width, height):
base_area = calculate_area(length, width)
return base_area * height
Detection
[X] Semi-Automatic
Some linters can find repeated code patterns.
Exceptions
The abstraction must have a dependency correspondence on the Bijection
Tags
- Bloaters
Conclusion
Repeated code is a problem and a hint for a missing abstraction.
Remember you don't need to avoid copying and pasting.
You must explicitly write the repeated code and remove the duplication by introducing an abstraction.
Avoiding the cut and paste is a shortcut and a symptom of premature optimization.
Relations
Code Smell 182 - Over Generalization
Disclaimer
Code Smells are my opinion.
Credits
Photo by Mitchell Griest on Unsplash
Pasting code from the internet into production code is like chewing gum found in the street.
Mike Johnson
Software Engineering Great Quotes
This article is part of the CodeSmell Series.