cover-img

Code Smell 232 - Reusable Code

25 November, 2023

17

17

0

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

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 46 - Repeated Code

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.

How to Find the Stinky Parts of your Code

17

17

0

Maxi Contieri

Buenos Aires, Argentina

🎓Learn something new every day.📆 💻CS software engineer 👷coding👨🏽‍🏫teaching ✍🏾writing 🎨Software Design 🏢SOLID 🌉TDD 👴Legacy 💩Code Smells

More Articles

Showwcase is a professional tech network with over 0 users from over 150 countries. We assist tech professionals in showcasing their unique skills through dedicated profiles and connect them with top global companies for career opportunities.

© Copyright 2024. Showcase Creators Inc. All rights reserved.