Code Smell 141 - IEngine , AVehicle, ImplCar
Have you ever seen an IEngine in the wild?

TL;DR: Don't prefix or suffix your classes
Problems
Readability
Bijection Fault
Implementative Names
Solutions
Remove prefixes and suffixes
Name your objects after what they do
Context
Some languages have cultural conventions related to data types, Abstract classes, or Interfaces.
These names load our models with cognitive translations hard to follow.
We must KISS.
Sample Code
Wrong
public interface IEngine
{
void Start();
}
public class ACar
{
}
public class ImplCar
{
}
public class CarImpl
{
}
Right
public interface Engine
{
void Start();
}
public class Vehicle
{
}
public class Car
{
}
Detection
[X] Automatic
If we have a Thesaurus we can point to awkward names.
Exceptions
In C# it's a common practice to put "I" in the name of an interface because without it, you can't tell whether it is an interface or a class. This is a language smell.
Tags
- Naming
Conclusion
Use real names for your models.
Relations
More Info
Credits
Photo by Tim Mossholder on Unsplash
Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.
Jamie Zawinski
This article is part of the CodeSmell Series.
About the author
I’m a senior software engineer loving clean code, and declarative designs. S.O.L.I.D. and agile methodologies fan.
Comments
Join the discussionNo comments yet. Be the first to comment.
Code Smells
In this series, we will see several symptoms and situations that make us doubt the quality of our developments. We will present possible solutions. Most are just clues. They are no hard rules.





