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
{
}
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.
Detection
[X] Automatic
If we have a Thesaurus we can point to awkward names.
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
Software Engineering Great Quotes
Maxi Contieri ・ Dec 28 '20
This article is part of the CodeSmell Series.