Рефакторинг Visual Studio: метод удаления

Есть ли надстройка Visual Studio, которая может выполнять рефакторинг метода удаления?
Предположим, у вас есть следующий метод:

Result DoSomething(parameters)  
{  
    return ComputeResult(parameters);  
}  

Или вариант, когда Результат недействителен.

Целью рефакторинга является замена всех вызовов DoSomething вызовами ComputeResult или выражением, использующим параметры, если ComputeResult не является вызовом метода.

Ответов (6)

Решение

Если я понимаю вопрос, Resharper вызывает этот «встроенный метод» - Ctrl- R+I

Когда дело доходит до такого рефакторинга, попробуйте ReSharper .

Просто щелкните правой кнопкой мыши имя метода, выберите «Найти использование» и выполните рефакторинг, пока он не сможет найти никаких ссылок.

И, как упоминал dlamblin, в новейшей версии ReSharper есть возможность встроить метод. Это должно делать именно то, что вам нужно.

ReSharper определенно является подключаемым модулем VS 2008 для рефакторинга. Однако он не выполняет эту форму рефакторинга за один шаг; вам придется Refactor-> переименовать DoSomething в ComputeResult и игнорировать конфликт с реальным ComputeResult. Затем удалите определение DoSomething. Это почти один шаг.

Однако, возможно, он сможет сделать это за один шаг . Если я правильно прочитал.

Вы также можете щелкнуть правой кнопкой мыши имя метода и выбрать «Найти все ссылки» в Visual Studio.

Лично я бы просто сделал CTRL+ SHIFT+, Hчтобы Find & Replace

Я бы сделал это самым простым способом:

  1. переименовать метод ComputeResult в ComputeResultX
  2. переименовать метод DoSomething в ComputeResult
  3. удалить метод DoSomething (который теперь называется ComputeResult)
  4. переименуйте метод ComputeResultX обратно в ComputeResult

Возможно, VS покажет конфликт из-за последнего переименования, но проигнорирует его.

Под «переименованием» я имею в виду: перезаписать имя метода и после этого использовать раскрывающийся список (Shift + Alt + F10) и выбрать «переименовать». Он заменит все вхождения на новое имя.

Есть несколько продуктов для добавления дополнительных возможностей рефакторинга в Visual Studio 2005 и 2008, некоторые из лучших - это Refactor! Pro и Resharper .

Что касается метода удаления, в канонической книге по рефакторингу есть описание того, как делать это постепенно.

Лично я следую шаблону в этих строках (предположим, что компиляция и запуск модульных тестов происходит между каждым шагом):

  1. Создайте новый метод
  2. Удалите тело старого метода, измените его, чтобы вызвать новый метод
  3. Найдите все ссылки на старый метод (щелкните правой кнопкой мыши имя метода и выберите «Найти все ссылки»), измените их на вызовы нового метода.
  4. Отметьте старый метод как [Устаревший] (теперь его вызовы будут отображаться как предупреждения во время сборки)
  5. Удалите старый метод