При работе с устаревшим кодом и попытке создания тестов я часто выхожу из зависимостей от классов или методов, поэтому я могу писать модульные тесты с использованием mocks для этих зависимостей. Зависимости чаще всего встречаются в виде вызовов статических классов и объектов, созданных с использованием нового ключевого слова в конструкторе или других местах в этом классе.
В большинстве случаев статические вызовы обрабатываются либо путем обертывания статической зависимости, либо если его одноэлементный шаблон (или аналогичный) в форме StaticClass.Current.MethodCall() передают эту зависимость по своему интерфейсу, вместо этого создайте конструктор.
В большинстве случаев использование нового ключевого слова в конструкторе просто заменяется передачей этого интерфейса в конструкторе.
В большинстве случаев использование нового ключевого слова в других частях класса обрабатывается либо тем же способом, как описано выше, либо при необходимости создает factory и передает интерфейс factory в конструкторе.
Я всегда использую инструменты рефакторинга Resharpers, чтобы помочь мне во всех этих случаях, однако большинство вещей по-прежнему являются ручным трудом (который может быть автоматизирован), а также для некоторых унаследованных классов и методов, которые могут быть очень утомительным процессом. Существуют ли какие-либо другие плагины рефакторинга и/или инструменты, которые помогут мне в этом процессе? Есть ли способ "рефакторинга" с одним словом "разбить все инструменты от этого класса"? =)
Мне кажется, что все эти шаги являются общими для многих разработчиков и общей проблемой, и прежде чем я попытаюсь написать плагин для Resharper или CodeRush, я должен спросить, потому что кто-то, вероятно, уже пытался это сделать.
ДОБАВЛЕНО:
В отражении ответов ниже: даже если вы не захотите вырывать все сразу (одно нажатие всего одного щелчка может вызвать больше проблем, чем помогает), все еще имея возможность просто вырваться из 1 зависимости методов или 1-2 зависимостей легко, будет иметь большую разницу.
Кроме того, код рефакторинга имеет меру "попробуйте и посмотрите, что происходит, только чтобы узнать, как все сочетается", и общий разрыв одного щелчка поможет этому процессу, даже если вы не проверите этот код...