Я подав заявку, яку я написав іншим архітекторам на перевірку коду. Один з них майже одразу написав мені відповідь і сказав: "Не використовуйте" статичні ". Ви не можете писати автоматичні тести зі статичними класами та методами." Статичного "слід уникати".
Я перевірив і повністю 1/4 моїх занять позначені "статично". Я використовую статику, коли я не збираюся створювати екземпляр класу, оскільки клас - це єдиний глобальний клас, який використовується в коді.
Він продовжував згадувати щось, що стосується глузування, методів IOC / DI, які не можна використовувати зі статичним кодом. Він каже, що прикро, коли сторонні бібліотеки є статичними через їх неперевіреність.
Правильний цей інший архітектор?
оновлення: ось приклад:
APIManager - цей клас зберігає словники сторонніх API, які я дзвоню разом із наступним дозволеним часом. Він застосовує ліміти використання API, які мають багато третіх сторін у своїх умовах надання послуг. Я використовую його де завгодно, я телефоную сторонній службі, зателефонувавши Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); перед тим, як телефонувати. Тут все безпечно для потоків, і це чудово працює з TPL в C #.
static
добре;static
з полями потрібно поводитися дуже обережно