Рефакторинг в Visual Studio: метод удаления - PullRequest
4 голосов
/ 12 августа 2008

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

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

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

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

Ответы [ 6 ]

5 голосов
/ 12 августа 2008

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

1 голос
/ 12 августа 2008

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

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

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

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

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

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

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

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

1 голос
/ 12 августа 2008

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

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

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

0 голосов
/ 12 августа 2008

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

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

0 голосов
/ 12 августа 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...