コード嗅覚130


インターフェイスを実装するクラスを見るのは良いことです.それが何を理解するのはより良いです
Code Smell 130 - AddressImpl

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


問題

  • の断層
  • 解決策

  • は、正しい名前を見つける
  • 文脈


    いくつかの言語は良いモデル命名に対して慣用句と一般的な使用をもたらします.
    我々は慎重に名前を選ぶべきだ.

    サンプルコード


    間違い


    public interface Address extends ChangeAware, Serializable {
    
        /**
         * Gets the street name.
         *
         * @return the street name
         */
        String getStreet();
        //...
    }
    
    //Wrong Name - There is no concept 'AddressImpl' in real world
    public class AddressImpl implements Address {
        private String street;
        private String houseNumber;
        private City city;
        //..
    }
    


    //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;
        //..
    }
    

    検出


    自動化
    これが命名匂いだから.
    我々は正規表現を使用して検索し、これらの概念の名前を変更できます.

    タグ


    の命名

  • 結論


    我々は、必須のBijectionに従ってクラス名を選ばなければならなくて、偶然の実装に続きません.
    インタフェースに電話しないでください.

    関係






    詳しい情報


  • クレジット


    Paula HayesUnsplashによる写真

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


    ロバートC .マーティン


    この記事はCodesmellシリーズの一部です.