DEV Community

Cover image for Code Smell 232 - Reusable Code
Maxi Contieri
Maxi Contieri

Posted on • Originally published at maximilianocontieri.com

Code Smell 232 - Reusable Code

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

  1. Create the repeated code

  2. Introduce an abstraction

  3. Replace the references and point to the new abstraction

  4. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

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


This article is part of the CodeSmell Series.

Top comments (5)

Collapse
 
ldrscke profile image
Christian Ledermann

But remember premature optimization is the root of all evil, and Code duplication is far cheaper than the wrong abstraction.

Collapse
 
villelmo profile image
William Torrez • Edited

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?

Collapse
 
mcsee profile image
Maxi Contieri

you can reuse code in C once you have repeated code

There are two different things

Collapse
 
villelmo profile image
William Torrez

So, reuse code is good or bad.

Thread Thread
 
mcsee profile image
Maxi Contieri

Sorry. It depends

The article and the backlinks shows some opiniones on when and how