2013-05-09 26 views
23

Mam tę klasę, gdzie potrzebuję inkrementować liczbę za każdym razem, gdy klasa jest tworzona. Znalazłem dwa sposoby na to, gdzie obie strony działa, ale nie jestem pewien, ale na tym, co jest najlepsze praktykiTypeScript: Najlepsza globalna statyczna zmienna statyczna

  1. zadeklarować zmienną w zakresie modułu

    module M { 
        var count : number = 0; 
        export class C { 
        constructor() { 
         count++; 
        } 
        } 
    } 
    
  2. zadeklarować zmienną w zakresie klasy i uzyskać do niego dostęp na klasy

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

My się to e xample, ponieważ nie dodaje zmiennej count w zakresie modułu.

Zobacz także: C# incrementing static variables upon instantiation

Odpowiedz

21

Zdecydowanie metoda 2 ponieważ jest to klasa, która jest za pomocą zmiennej. Powinien go zawierać.

W przypadku 1 używasz zmiennej, która stanie się mylące, gdy masz więcej niż jeden zajęcia tam np

module M { 

    var count : number = 0; 

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

    export class A{ 
    } 
} 
+1

Jeśli klasa C nie jest jedyną pomocą licznika nie będzie przeszkadzał widząc go na poziomie pakietu. Ważniejsza jest nazwa zmiennej. W większości miejsc w kodzie nazwa "liczba" nie jest wystarczającą informacją o tym, co ona reprezentuje. Wolałbym "numConstructed" lub "builtCount". –

+0

zgadzam się, powinny być konkretne! Kod użyty tutaj był tylko przykładami –

1

Obaj są w porządku, ale method 2 bardziej wymowne, co oznacza jej mniej mylące, gdy twój kod staje się bardziej złożony, chyba że używasz count do zwiększenia za każdym razem, gdy tworzysz instancję klasy z tego modułu, to jest droga do zrobienia.

wolę zrobić to w ten sposób:

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