DEV Community

Cover image for Code Smell 141 - IEngine , AVehicle, ImplCar
Maxi Contieri
Maxi Contieri

Posted on • Updated on • Originally published at maximilianocontieri.com

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

  1. Remove prefixes and suffixes

  2. 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
{

}
Enter fullscreen mode Exit fullscreen mode

Right

public interface Engine
{
    void Start();
}

public class Vehicle 
{

}

public class Car 
{

}
Enter fullscreen mode Exit fullscreen mode

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


This article is part of the CodeSmell Series.

Discussion (0)