На мой взгляд, есть две вещи, для которых статические классы хороши:
- , обеспечивающие глобальные функции / алгоритмы (которые не должны зависеть от состояния - так называемые чистые функции)
- удерживают глобальныеdata
Если вы смоделируете методы там, чтобы они были чистыми, вы можете проверить их сразу.Глобальные данные (ваши константы и члены только для чтения), с другой стороны, не нуждаются в проверке, поскольку они должны быть получены указанными методами.
Так что, если ваши статические методы используют глобальные данные из вашего класса, просторефакторинг их, чтобы включить эти данные в качестве параметров в метод, перегрузить их простыми обертками, передающими ваши глобальные данные, и протестировать новые - теперь чистые - функции.Позаботьтесь о том, чтобы включить в свои методы такие вещи, как данные базы данных или системное время (DateTime.Now) и аналогичные данные о побочных эффектах.
Если список параметров попадает в большой рефакторинг, метод превращается в класс, где некоторые/ большинство параметров инкапсулированы в новые поля классов - всегда помните S из SOLID (единая ответственность) - только загромождайте все в класс MyStaticGlobals / singelton, если вы проверяете детали в отделении.