Clean Code:クラス



1.クラス体系


  • Javaの場合、変数リストが最初に表示されます.

  • static public定数がある場合は、private変数が最初に表示され、privateインスタンス変数が表示されます.

  • 変数を公開する必要はほとんどない.

  • 変数リストの後に公開関数が表示されます.非公開関数は、その公開関数を呼び出した直後に続く.

  • カプセル化
    テストコードから関数を呼び出すか、変数を使用する必要がある場合は、保護として宣言するか、パッケージ全体として公開できます.
    しかし、その前に非公開状態を維持する方法を考えなければならない.カプセル化を解くのが最後の決定です.
  • 2.等級が小さい


    クラスは小さくなければなりません.小さいほどいいです.ここで、「小」の基準はクラスが負う責任の個数と見なすことができる.
    public class SuperDashboard extends JFrame implements MetaDataUser {
      public Component getLastFocusedComponent();
      public void setLastFocused(Component lastFocused);
      public int getMajorVersionNumber();
      public int getMinorVersionNumber();
      public int getBuildNumber();
    }
    上記の例は、メソッドが5つしかないクラスです.では、小さい等級ですか.
    そうではありません.理由はこのクラスの責任の数を見ればわかるからだ.
    このクラスは、最後にフォーカスを取得する構成部品へのアクセス方法(1)を提供し、バージョンとバージョン番号を追跡するメカニズム(2)を提供する.
    あなたはすでに2つ以上の責任を負っているのを見ることができます.
    したがって、クラスは、バージョン情報を処理する方法をVersionクラスに分離できるように、クラスをより小さくする責任を分けることができる.

  • 単一責任原則(SRP)
    原則として、クラスまたはモジュールを変更する理由(責任)は1つしかありません.したがって、クラスには変更の理由が必要です.
    一方,SRPによる分類では多くのクラスを越えて大きな図を理解することは困難である.
    しかし、システムがますます複雑になると、マルチターゲットクラスは、すぐに知る必要のない事実に強制され、理解を妨げ、逆に、小クラスをシステム整理する場合は、後で変更する必要がある場合に直接影響する要素を変更するだけでよい.

  • ぎょうしゅうど
    クラスには、インスタンス変数の数が少ない必要があります.メソッドで使用される変数が多ければ多いほど、メソッドとクラスの凝集力が高くなります.
    ただし、「関数が小さくなり、パラメータリストが短くなる」ポリシーに従うと、一部のメソッドで使用されるインスタンス変数だけが多くなります.
    これはクラスを分割する必要がある信号であり,クラスの凝集力を高めるために変数と方法を新しいクラスに分離する必要がある.
  • 3.変更しやすいクラス


    クリーンクラスはSRPだけでなく、オープン・クローズド・ルール(OCP)もサポートします.派生クラスを作成して新しい機能を追加することで、別のクラスを開き、変更を閉じることができます.これにより、機能が追加されてもシステムは拡張され、既存のコードは変更されません.