Skip to content

Latest commit

 

History

History
112 lines (69 loc) · 3.16 KB

File metadata and controls

112 lines (69 loc) · 3.16 KB

Code Smell 130 - AddressImpl

Code Smell 130 - AddressImpl

It is nice to see a class implementing Interfaces. It is nicer to understand what it does

TL;DR: Name your classes after real-world concepts.

Problems

Solutions

  1. Find the correct name using the MAPPER

Context

Some languages bring idioms and common usages against good model naming.

We should pick our names carefully.

Sample Code

Wrong

public interface Address extends ChangeAware, Serializable {
    String getStreet();
}

// Wrong Name - There is no concept 'AddressImpl' in the real world
public class AddressImpl implements Address {
    private String street;
    private String houseNumber;
    private City city;
    // ..
}

Right

// Simple
public class Address {
    private String street;
    private String houseNumber;
    private City city;
    // ..
}

// OR
// Both are real-world names
public class Address implements ContactLocation {
    private String street;
    private String houseNumber;
    private City city;
    // ..
}

Detection

[X] Automatic

Since this is a naming smell.

We can search using regular expressions and rename these concepts.

Tags

  • Naming

Conclusion

We should pick class names according to essential bijection and not follow accidental implementation.

Do not call I to your interfaces.

Relations

Code Smell 65 - Variables Named after Types

Code Smell 38 - Abstract Names

More Info

What exactly is a name - Part II Rehab

Credits

Photo by Paula Hayes on Unsplash


Encoded names are seldom pronounceable and are easy to miss-type.

Robert C. Martin

Software Engineering Great Quotes


This article is part of the CodeSmell Series.

How to Find the Stinky Parts of your Code