Вопрос

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

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

Или вариант, где Result недействителен.

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Существует несколько продуктов, позволяющих добавить дополнительные возможности рефакторинга в Visual Studio 2005 и 2008. Вот несколько лучших из них: Рефакторинг!Про и Решарпер.

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

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

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

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

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

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

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

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

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

Лично я бы просто сделал CTRL + СДВИГ + ЧАС к Find & Replace

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top