2013-05-09 18 views
23

Ho questa classe in cui ho bisogno di incrementare un numero ogni volta che la classe viene istanziata. Ho trovato due modi per questo, dove funziona in entrambi i modi, ma non sono ancora sicuro su quello che è la migliore praticaTypeScript: Best practice delle variabili statiche globali

  1. dichiarare la variabile nel campo di applicazione del modulo

    module M { 
        var count : number = 0; 
        export class C { 
        constructor() { 
         count++; 
        } 
        } 
    } 
    
  2. dichiarare la variabile nel campo di applicazione di classe e accedervi su Class

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

il mio prendere è e esempio due, in quanto non aggiunge la variabile count nello scope del modulo.

Consulta anche: C# incrementing static variables upon instantiation

risposta

21

Sicuramente il metodo 2 dal momento che è la classe che utilizza la variabile. Quindi dovrebbe contenerlo.

Nel caso 1 si utilizza una variabile che diventerà fonte di confusione una volta che avete più di una classe in là per esempio:

module M { 

    var count : number = 0; 

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

    export class A{ 
    } 
} 
+1

Se la classe C non è l'unico con il conteggio non vorrei essere disturbato vederlo a livello di pacchetto. Ciò che è più importante è il nome della variabile. Nella maggior parte dei punti del codice, il nome "conta" non è abbastanza informazioni su ciò che rappresenta. Preferirei "numConstructed" o "builtCount". –

+0

d'accordo, dovrebbero essere specifici! Il codice usato qui era solo un esempio –

1

Entrambi sono a posto, ma method 2 più auto esplicativo, il che significa che la sua meno confondere quando il codice diventa più complesso a meno che non si stia utilizzando il count per aumentare ogni volta che si crea un'istanza di una classe da quel modulo, quindi method 1 è la strada da percorrere.

preferisco farlo in questo modo:

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