- Должны ли вы забыть, что они когда-либо существовали? Нет.
- Должны ли вы убедиться, что их включение в ваш код выполняется таким образом, чтобы они были прозрачны для функциональности класса? Да.
Чтобы объяснить эту последнюю часть далее, вместо того, чтобы пытаться извлечь значение из одиночного кода в вашем коде, попытайтесь инициализировать значение в аргументе конструктора. Если ваш конструктор становится слишком большим, создайте метод фабрики для создания, чтобы вы могли проверить свой класс без использования синглтона. Если это окажется проблематичным или ваш синглтон имеет изменяемое состояние (я бы этого боялся, но это же я), то постарайтесь сделать так, чтобы ваш синглтон был как можно проще включить в ваше тестирование.
Вам не нужно создавать весь файл конфигурации только для того, чтобы протестировать метод в классе, который вычисляет стандартное отклонение блока биржевых котировок за 4-часовой период. Это слишком много работы. Но если ваш синглтон написан таким образом, что вы можете заполнить его данными и поручить другому классу прочитать файл конфигурации и заполнить эти данные, то вы добились больших успехов.
Что касается статических методов, я бы сказал, что это наиболее легко тестируемые методы, которые вы могли бы написать, основываясь на условии, что вам не нужно беспокоиться о глобальном состоянии. Статические эквивалентны y = f(x)
, что кажется упрощенным, но лежит в основе того факта, что никакие локальные переходы состояний не могут изменить инвариант, что для данного x
вы всегда получите тот же y
.