Я отправил заявку, которую написал другим архитекторам, для проверки кода. Один из них почти сразу же ответил мне и сказал: «Не используйте« статические ». Вы не можете писать автоматические тесты со статическими классами и методами.« Статических »следует избегать».
Я проверил и полностью четверть моих классов помечены как «статические». Я использую static, когда не собираюсь создавать экземпляр класса, потому что этот класс является единым глобальным классом, используемым во всем коде.
Далее он упомянул кое-что, касающееся насмешек, методов IOC / DI, которые нельзя использовать со статическим кодом. Он говорит, что неудачно, когда сторонние библиотеки статичны из-за их непроверяемости.
Этот другой архитектор прав?
обновление: вот пример:
APIManager - этот класс содержит словари сторонних API, к которым я обращаюсь, в следующий раз. Он устанавливает ограничения на использование API, которые многие сторонние поставщики используют в своих условиях обслуживания. Я использую его везде, где я вызываю стороннюю службу, вызывая Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); прежде чем сделать звонок. Все здесь является поточно-ориентированным и прекрасно работает с TPL в C #.
static
Это хорошо;static
поля должны быть обработаны очень осторожно