45

クラスがインスタンス化されるたびに数値を増やす必要があるこのクラスがあります。両方の方法が機能する2つの方法を見つけましたが、何がベストプラクティスであるかはまだわかりません

  1. モジュールスコープで変数を宣言する

    module M {
      var count : number = 0;
      export class C {
        constructor() {
          count++;
        }
      }
    }
    
  2. クラススコープで変数を宣言し、クラスでアクセスします

    module M {
      export class C {
        static count : number = 0;
        constructor() {
          C.count++;  
        }
      }
    }
    

モジュール スコープに count 変数を追加しないため、私の例は 2 です。

参照: C# インスタンス化時に静的変数をインクリメントする

4

2 に答える 2

35

それは変数を使用しているクラスであるため、間違いなく方法2です。したがって、それを含む必要があります。

ケース 1 では、複数のクラスがあると混乱する変数を使用しています。例:

module M {

  var count : number = 0;

  export class C {
    constructor() {
      count++;
    }
  }

  export class A{
  }
}
于 2013-05-09T14:00:05.183 に答える
2

どちらも問題ありませんが、method 2より自明です。countつまり、そのモジュールからクラスをインスタンス化するたびに を使用して増加させない限り、コードがより複雑になったときの混乱が少なくなりますmethod 1

私はこのようにすることを好みます:

module M {
  export class C {
    static count : number = 0;
    constructor() {
      C.count++;  
    }
  }
}
于 2016-03-22T12:57:05.013 に答える