Code Smell 141 - IEngine , AVehicle, ImplCar

Photo by Tim Mossholder on Unsplash

Code Smell 141 - IEngine , AVehicle, ImplCar

Have you ever seen an IEngine in the wild?

Maxi Contieri
·Jun 18, 2022·

2 min read

Subscribe to my newsletter and never miss my upcoming articles

Play this article

Table of contents

  • Problems
  • Solutions
  • Context
  • Sample Code
  • Detection
  • Exceptions
  • Tags
  • Conclusion
  • Relations
  • More Info
  • Credits

TL;DR: Don't prefix or suffix your classes


  • Readability

  • Bijection Fault

  • Implementative Names


  1. Remove prefixes and suffixes

  2. Name your objects after what they do


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


public interface IEngine
    void Start();

public class ACar 


public class ImplCar 


public class CarImpl



public interface Engine
    void Start();

public class Vehicle 


public class Car 



[X] Automatic

If we have a Thesaurus we can point to awkward names.


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.


  • Naming


Use real names for your models.


More Info


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.

Share this