コード匂い114 -空のクラス


あなたは行動のないクラスに遭遇しましたか?クラスは振る舞いです.

TL;DR: Remove all empty classes.



問題
  • の断層
  • 名前空間
  • として使われるクラス
    として使われるクラス

    解決策
  • クラスを削除し、代わりにオブジェクトに置き換えます.
  • あなたのクラスが貧血例外であるならば、...

  • 文脈
    多くの開発者はまだクラスを考えている.
    彼らは異なったデータを返すことによって異なった振舞い概念を結合します.

    サンプルコード

    間違い
    class ShopItem { 
      code() { }
      description() { }                 
    }
    
    class BookItem extends ShopItem { 
       code() { return 'book' }
       description() { return 'some book'}     
    }
    
    // concrete Class has no real behavior, just return different 'data'
    


    class ShopItem { 
      constructor(code, description){
        //validate code and description
        this._code = code;
        this._description = description;
      }
      code() { return this._code }
      description() { return this._description }                 
      //Add more functions to avoid anemic classes
      //getters are also code smells, so we need to iterate it
    }
    
    bookItem = new ShopItem('book', 'some book);
    //create more items
    

    検出
    自動化
    いくつかの画家たちは私たちに空のクラスを警告します.
    また、独自のスクリプトを使用することができます.

    タグ
  • の行動

  • 結論
    クラスは、彼らが行う行動です.
    空のクラスは何もしません.

    関係









    詳しい情報

  • -

    クレジット
    Kelly SikkemaUnsplashによる写真

    An error arises from treating object variables (instance variables) as if they were data attributes and then creating your hierarchy based on shared attributes. Always create hierarchies based on shared behaviors, side.


    ウェスト


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