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
Maxi Contieri ・ Nov 27 '22
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
Maxi Contieri ・ Dec 28 '20
This article is part of the CodeSmell Series.
Top comments (5)
But remember premature optimization is the root of all evil, and Code duplication is far cheaper than the wrong abstraction.
What happen if i am learning? I need coding.
How i can reuse code in C?
What is the difference between Software design pattern and reuse code?
you can reuse code in C once you have repeated code
There are two different things
So, reuse code is good or bad.
Sorry. It depends
The article and the backlinks shows some opiniones on when and how