We are refactoring fans. Sometimes we need to stop and think.
TL;DR: Don't make generalizations beyond real knowledge.
-
Overgeneralization
-
Bijection violation
- Think before making structural generalizations
Refactoring is not just looking at structural code.
We need to refactor behavior and check if it needs an abstraction.
fn validate_size(value: i32) {
validate_integer(value);
}
fn validate_years(value: i32) {
validate_integer(value);
}
fn validate_integer(value: i32) {
validate_type(value, :integer);
validate_min_integer(value, 0);
}
fn validate_size(value: i32) {
validate_type(value, Type::Integer);
validate_min_integer(value, 0);
}
fn validate_years(value: i32) {
validate_type(value, Type::Integer);
validate_min_integer(value, 0);
}
// Duplication is accidental, therefore you should not abstract it
[X] Manual
This is a semantic smell.
- Duplication
Software development is a thinking activity.
We have automated tools to help and assist us. We need to be in charge.
Code Smells are just my opinion.
Photo by Matthew Henry on Unsplash
Duplication is far cheaper than the wrong abstraction.
Sandi Metz
Software Engineering Great Quotes
This article is part of the CodeSmell Series.