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

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

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

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

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

12.08.2008 06:22:06
6 ОТВЕТОВ
РЕШЕНИЕ

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

6
11.08.2012 15:33:40
Возможно ли это сделать без ReSharper?
Sasha 1.09.2017 14:56:42

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

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

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

1
12.08.2008 07:49:12

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

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

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

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

1
12.08.2008 07:04:26

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

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

0
11.08.2012 15:34:24

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

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

0
12.08.2008 07:35:35

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

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

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

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