JetBrains Rider 2020.2 ヘルプ

「パラメーターの導入」リファクタリング

リファクタリング | 抽出 / 紹介 | パラメーターの導入 ...
Ctrl+Alt+P

このリファクタリングでは、新しいパラメーターを追加することにより、メソッド実装からその呼び出し元に式を移動できます。式のすべての出現箇所が新しいパラメーターに置き換えられます。ソリューション内のメソッドへのすべての呼び出しは、新しい引数で更新されます。

以下の例では、このリファクタリングを使用して、同じ文字列の 2 つの出現箇所をパラメーターに置き換えます。文字列自体は呼び出し元の引数に移動されます。

abstract class Shape { public void Draw() { try { /*draw*/ } catch (Exception e) { LogError(e); } } static void LogError(Exception ex) { Console.WriteLine("Something has failed..."); File.WriteAllText(@"c:\Error.txt", "Something has failed..." + ex); } }
abstract class Shape { public void Draw() { try { /*draw*/ } catch (Exception e) { LogError(e, "Something has failed..."); } } static void LogError(Exception ex, string message) { Console.WriteLine(message); File.WriteAllText(@"c:\Error.txt", message + ex); } }

パラメーターとして渡す式がメソッド本体で宣言されたシンボルを参照する場合、JetBrains Rider では、汎用デリゲートパラメーターを導入し、それを使用して呼び出し元からラムダ式を渡すことにより、これらのシンボルを「en-lambda」できます。以下の例では、"The current time is: " + currentTme 式のリファクタリングを呼び出します。

static void PrintCurrentTime() { var currentTme = DateTime.Now.ToString("h:mm:ss tt"); Console.WriteLine("The current time is: " + currentTme); } private void Test1() { PrintCurrentTime(); }
static void PrintCurrentTime(Func<string, string> output) { var currentTme = DateTime.Now.ToString("h:mm:ss tt"); Console.WriteLine(output(currentTme)); } private void Test1() { PrintCurrentTime(currentTme => "The current time is: " + currentTme); }

選択した式のパラメーターを導入する

  1. エディターで、メソッドまたはコンストラクター内の式を選択します。

  2. 以下のいずれか 1 つを実行します :

    • Ctrl+Alt+P を押します。

    • Ctrl+Alt+Shift+T を押し、次にパラメーターの導入を選択します。

    • メインメニューのリファクタリング | パラメーターの導入を選択します。

  3. 選択した式が複数見つかった場合、JetBrains Rider にドロップダウンメニューが表示され、リファクタリングをすべての出現箇所に適用するか、現在のリカバリのみに適用するかを選択できます。

  4. 表示されるパラメーターの導入ダイアログで、新しいパラメーターの名前を入力します。

  5. 選択した式が定数であるか値型である場合は、その式を導入されたパラメーターのデフォルト値として使用できます。そうするには、デフォルトにするチェックボックスを選択します。

  6. 選択した式が他の変数に依存する場合、これらの変数は en-lambda にローカル変数を選択するセクションに表示されます。ジェネリックデリゲートで使用する変数を選択します(この場合はパラメーターとして追加されます)。

  7. リファクタリングを適用するには、次へをクリックします。

  8. 競合が見つからない場合、JetBrains Rider はすぐにリファクタリングを実行します。それ以外の場合は、競合解決するように求められます。

JetBrains Rider: 'Introduce Parameter' refactoring
最終更新日 :