はじめに
今回はメソッド抽出(extract method)というRiderのリファクタリング機能について紹介したいと思います。
概要
Riderのメソッド抽出を利用することで、自動で特定の箇所を新しくメソッドとして切り出したりローカル関数として切り出したりすることができます。
このリファクタリングでは、選択したコードフラグメントに基づいて新しいメソッドまたはローカル関数を作成できます。JetBrains Rider は選択されたステートメントを分析し、メソッドパラメーターに変換するか、その戻り値を表す変数を検出します。
メソッドの抽出リファクタリング | JetBrains Rider ドキュメント
// before static void PrintReversed(string input) { var chars = input.ToCharArray(); Array.Reverse(chars); var reversed = new string(chars); Console.WriteLine(reversed); }
// after例 static void PrintReversed(string input) { var reversed = ReverseStr(input); Console.WriteLine(reversed); } private static string ReverseStr(string input) { var chars = input.ToCharArray(); Array.Reverse(chars); var reversed = new string(chars); return reversed; }
やり方
メソッドとして切り出したい箇所を選択している状態で、alt + Enter
(Macならoption + Enter
)を押した後に、メソッドの抽出
を選択します。
メソッドの抽出
を選択すると、メソッドの抽出
かローカル関数の抽出
の選択肢が出てきます。
メソッドの抽出
を選択すると皆さんがよくイメージするように外に切り出し、ローカル関数の抽出
を選択するとメソッド内にメソッドの定義を行うような形になります。
ローカル関数 - C# プログラミング ガイド | Microsoft Learn
メソッドの抽出
メソッドの抽出
を選択すると、下記のようなウィンドウが立ち上がり、メソッド名・パラメーター・返り値・アクセス修飾子、static
やvirtual
の設定をします。
後は次へ
を押せば、自動でメソッドを抽出してくれます。
ローカル関数の抽出
ローカル関数の抽出
を選択すると、ローカル関数をどこに定義するのかまず質問されます。
適当に選択した後は、先程のメソッドの抽出
の際とほとんど変わりません。(パラメーターと返り値のみ設定できる)