Автоматический рефакторинг для добавления имен параметров в вызовы методов
Я нахожусь в центре большого рефакторинга.
У меня есть десятки методов, которые вызывается через позиционные параметры. Теперь я хотел бы, чтобы они вызывались через именованные параметры. Методы существуют в нескольких, не унаследованных классах и имеют одно и то же имя и их подписи отличаются. Пример:
Определения
public class Foo
{
public static Foo Create(int count, string name)
{
...
}
}
public class Bar
{
public static Bar Create(string description, bool yesNo, float factor)
{
...
}
}
И следующие вызовы, которые я хотел бы заменить, из
public void CreateSomeObjects()
{
var foo = Foo.Create(123, "foo");
var bar = Bar.Create("bar", true, 1.23);
}
к
public void CreateSomeObjects()
{
var foo = Foo.Create(count: 123, name: "foo");
var bar = Bar.Create(description: "bar", yesNo: true, factor: 1.23);
}
Я использую Visual Studio Premium 2013 и Resharper. Любые идеи, как достичь этого? (Мне просто нужен намек, нет полного решения.)
Ответы
Ответ 1
Не уверен, насколько это практично, но вы можете сделать следующее с помощью ReSharper:
- Используйте "Найти использование", чтобы получить список всех мест вызова методов.
- Для каждого использования дважды щелкните, чтобы перейти к методу.
- Затем в редакторе кода щелкните значение параметра, и ReSharper должен показать индикатор действия (лампочку или молоток в левом поле).
- Нажмите индикатор действия, чтобы отобразить контекстное меню действия.
- Выберите действие "Добавить имя аргумента", чтобы добавить имена параметров ко всем параметрам.
- Повтор.
Ответ 2
Спустя годы после того, как был задан этот вопрос, я нашел его во время поиска в Google (поскольку я нахожусь в той же ситуации).
У меня нет доступа к ReSharper, но для меня превосходный Roslynator был решением.
Вы можете установить его через диалог Расширения и обновления VS2017/2019 (поиск "Roslynator") или через VS Marketplace. Существует также версия, которая содержит только рефакторинги, если по какой-то причине вы не хотите устанавливать анализаторы.
После установки расширения и перезапуска Visual Studio вы можете щелкнуть правой кнопкой мыши первый параметр любого метода и выбрать Быстрые действия и рефакторинги..., затем нажмите Добавить имя аргумента 'XXX' (включая конечные аргументы) для добавления в имена (см. скриншоты ниже).
![Quick Actions and Refactorings]()
![Add argument name]()
Он не полностью автоматизирован (хотя я полагаю, что он может быть основан на Roslyn), но я уже сэкономил много времени.