Автоматический рефакторинг для добавления имен параметров в вызовы методов

Я нахожусь в центре большого рефакторинга.

У меня есть десятки методов, которые вызывается через позиционные параметры. Теперь я хотел бы, чтобы они вызывались через именованные параметры. Методы существуют в нескольких, не унаследованных классах и имеют одно и то же имя и их подписи отличаются. Пример:

Определения

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), но я уже сэкономил много времени.