Изменение вашего производственного кода и раскрытие его «внутренностей», чтобы вы могли проверить его, является очень плохой практикой.Это нарушает инкапсуляцию, и, если ваш код не тестируется в первую очередь, это обычно означает, что он нуждается в рефакторинге.
«Сложная логика», которую вы хотите переместить в статическом методе, безусловно, принесет пользу для правильной обработки ОО., Создайте специальный класс для обработки этой логики или набор классов, внедрите их в ваш MyClass
через интерфейс, разделите задачи, и ваше тестирование станет намного проще.
Более того, начните с ваших тестов (TDD), используя фиктивную среду, и это будет органично способствовать созданию хорошего дизайна без необходимости использования статических методов или подобных хаков.
Пример: Допустим, вашMyClass
необходимо сильно преобразовать один из его параметров (в вашем случае, String s
, прежде чем его можно будет использовать. Итак, вы хотели извлечь эту обработку в статический метод? Вместо этого добавьте в свой класс зависимость,скажем, StringTransformer
(переименуйте соответственно), который является интерфейсом к реальной реализации, которую вы хотите. В преобразователе есть метод transform(String s)
, который будет содержать желаемую логику. Затем протестируйте свою реализацию обычными способами, работа выполнена.И вы действительно сделали свой дизайн лучше.