15

我正處於大型重構的中間。爲方法調用添加參數名稱的自動重構

我有幾十個方法,通過位置參數調用。現在我想讓他們通過命名參數調用。這些方法存在於幾個非繼承類中,並具有相同的名稱和簽名。例如:

定義

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高級專業版2013和ReSharper的。任何想法如何實現這一目標? (我只需要一個提示,沒有完整的解決方案。)

+1

您是否找到解決方案?非常感謝... – ManOnAMission 2015-01-20 07:12:43

+0

不幸的是沒有。我目前的做法是用[Roslyn](https://github.com/dotnet/roslyn)重寫這個。由於我剛剛開始,我現在不會發布代碼。 – 2015-01-22 09:42:01

+0

CodeRush似乎能夠插入命名參數(這是您手動需要點擊的上下文菜單,因此沒有自動化解決方案)。 – ManOnAMission 2015-01-22 12:18:17

回答

10

不知道如何實踐這個,但你可以執行以下操作使用ReSharper的:

  1. 使用「查找用法」來獲取所有方法調用的列表位置。
  2. 對於每種用法,雙擊以轉到該方法。
  3. 然後在代碼編輯器中,單擊一個參數值,ReSharper應該顯示其動作指示器(左邊的燈泡或錘子)。
  4. 單擊動作指示器以顯示動作上下文菜單。
  5. 選擇「添加參數名稱」操作將參數名稱添加到所有參數。
  6. 重複。
+2

這比聽起來容易很多。我只是將名爲參數的級別調高到警告級別,然後在每個函數的第一個參數上點擊ctl +。,輸入完成。 – fastmultiplication 2016-08-17 23:34:35

相關問題