C#: const vs. read-only

Dzisiaj króciutki post na temat różnic między słowem kluczowym const a read-only. Oba słowa służą do deklarowania zmiennych niemodyfikowalnych. Jaka jest więc różnica?

const:

  1. Nie może być deklarowane z modyfikatorem static – stanowiłoby to pewną nadmiarowość ponieważ stałe odwołują się w końcu do całej klasy a nie instancji  (skoro nie mogą być zmodyfikowane nie ma sensu istnienia kopii dla każdej z instancji).
  2. Wartość jest przypisywana w czasie kompilacji.
  3. Wartość można ustawiać wyłącznie w deklaracji (co jest następstwem reguły 2).
  4. // UPDATE (Szogun1987 trafnie zasugerował jeszcze jedną różnicę wynikającą z punktu 2):
    Wartość oznaczona modyfikatorem const może być wykorzystywana w warunku case  constant (switch-case).

readonly:

  1. Może być poprzedzone modyfikatorem static.
  2. Przetwarzane na poziomie runtime.
  3. Można inicjalizować zarówno z poziomu deklaracji jak i konstruktora.

Testy integracyjne bottom-up

W ostatnim poście pisałem o testach integracyjnych typu top-down. Dzisiaj przyszedł czas na podejście bottom-up. Będziemy analizować testowanie systemu przedstawionego w wprowadzeniu.

W podejściu bottom-up tester zaczyna od najniższych modułów – tych najbardziej oddalonych od punktów wejściowych, przeważnie znajdujących się w dolnych warstwach systemu. Ogromną zaletą metody jest redukcja wymaganych do przeprowadzenia testu obiektów mock. Niestety w podejściu należy tworzyć własne sterowniki. Przykładowe etapy dla systemu z wprowadzenia:

image

image

image

image

image