Złożyłem aplikację, którą napisałem do innych architektów w celu przejrzenia kodu. Jeden z nich niemal natychmiast odpisał mi i powiedział: „Nie używaj„ statycznego ”. Nie możesz pisać automatycznych testów za pomocą klas i metod statycznych. Należy unikać„ statycznego ”.
Sprawdziłem iw pełni 1/4 moich zajęć jest oznaczonych jako „statyczne”. Używam static, gdy nie zamierzam tworzyć instancji klasy, ponieważ klasa jest pojedynczą klasą globalną używaną w całym kodzie.
Później wspomniał o kpinie, technikach IOC / DI, których nie można używać ze statycznym kodem. Mówi, że niefortunnie jest, gdy biblioteki stron trzecich są statyczne z powodu ich braku możliwości testowania.
Czy ten drugi architekt ma rację?
aktualizacja: oto przykład:
APIManager - ta klasa przechowuje słowniki interfejsów API innych firm, do których dzwonię, wraz z następnym dozwolonym czasem. Egzekwuje limity użytkowania interfejsu API, które wiele podmiotów zewnętrznych ma w swoich warunkach świadczenia usług. Używam go wszędzie, gdzie dzwonię do usługi innej firmy, dzwoniąc do Thread.Sleep (APIManager.GetWait („ProviderXYZ”)); przed wykonaniem połączenia. Wszystko tutaj jest wątkowo bezpieczne i działa świetnie z TPL w C #.
static
jest w porządku;static
pola należy traktować bardzo ostrożnie