メソッドの抽出リファクタリング
このリファクタリングでは、選択したコードフラグメントに基づいて新しいメソッドまたはローカル関数を作成できます。JetBrains Rider は選択されたステートメントを分析し、メソッドのパラメーターに変換できる変数や戻り値を表す変数を検出します。
次の例を考えてみましょう。メソッド PrintReversed() は実際に 2 つのことを行います。文字列を反転して出力します。反転ロジック ( Console.WriteLine(reversed); を除くすべてのステートメント) を選択し、このリファクタリングを使用してそのロジックを新しい ReverseStr() メソッドに移動できます。
選択したステートメントからメソッドを抽出する
エディターで、メソッドに変換する文を 1 つ以上選択します。
以下のいずれか 1 つを実行します:
Ctrl+Alt+M を押します。
Alt+Enter を押して、メソッドの抽出を選択します。
Ctrl+Alt+Shift+T を押し、メソッドの抽出を選択します。
開いたポップアップで、メソッドの抽出を選択します。
抽出方法を設定できるダイアログが表示されます。

名前フィールドに新しいメソッドの名前を入力します。
JetBrains Rider がリターンリスト内の可能な戻り値として検出した式の 1 つを選択します。他の式が戻り値として検出される可能性があります。これらは
outパラメーターとしてリストされます。パラメーター領域の対応するチェックボックスを使用してパラメーターを含めるか除外します。リストからパラメーターを除外すると、必要に応じて同じ名前と型のローカル変数が作成されます。
パラメーターの順序を変更するには、リストでパラメーターを選択し、上へ移動および上へ移動ボタンを使用します。
static にするおよび / または仮想化するを選択して、対応する修飾子をメソッドに追加します。
必要に応じて、可視性リスト内のメソッドの表示 / 非表示を変更します。
プレビューフィールドで結果メソッドの署名と本体を確認します。
リファクタリングを適用するには、次へをクリックします。
競合が見つからない場合、JetBrains Rider はすぐにリファクタリングを実行します。それ以外の場合は、競合を解決するように求められます。
選択したステートメントからローカル関数を抽出する
エディターで、ローカル関数に変換する 1 つ以上のステートメントを選択します。
以下のいずれか 1 つを実行します:
Ctrl+Alt+M を押します。
Alt+Enter を押して、メソッドの抽出を選択します。
Ctrl+Alt+Shift+T を押し、メソッドの抽出を選択します。
開いたポップアップで、ローカル関数の抽出を選択します。
表示されるダイアログで、現在のメソッド内のローカル関数を配置する場所を指定し、次へをクリックします。

抽出されたローカル関数を構成できるダイアログが表示されます。

新しいローカル関数の名前を名前フィールドに入力します。
JetBrains Rider がリターンリスト内の可能な戻り値として検出した式の 1 つを選択します。他の式が戻り値として検出される可能性があります。これらは
outパラメーターとしてリストされます。パラメーター領域の対応するチェックボックスを使用してパラメーターを含めるか除外します。リストからパラメーターを除外すると、必要に応じて同じ名前と型のローカル変数が作成されます。
パラメーターの順序を変更するには、リストでパラメーターを選択し、上へ移動および上へ移動ボタンを使用します。
プレビューフィールドで、結果として得られるローカル関数の署名と本体を確認します。
リファクタリングを適用するには、次へをクリックします。
競合が見つからない場合、JetBrains Rider はすぐにリファクタリングを実行します。それ以外の場合は、競合を解決するように求められます。
関連ページ:
メソッドリファクタリングのインライン化
このリファクタリングは、静的、インスタンス、拡張メソッドの使用箇所をその本体に置き換え、オプションで元のメソッド宣言を削除できます。このリファクタリングをバッキングフィールドのあるプロパティに適用することもできます。この場合、読み取りの使用箇所は getter 本体に置き換えられ、書き込みの使用箇所は setter 本体に置き換えられます。以下の例では、このリファクタリングを使用してメソッドをインライン展開します。abstract class Shape { public void Draw()...
リファクタリングの競合を解決する
すべての JetBrains Rider のリファクタリングはソリューション全体に適用されるため、多くのファイルが影響を受ける可能性があり、一部の変更は既存のコードと競合する可能性があります。競合が発生した場合、JetBrains Rider はそれらを検出し、リファクタリングウィザードの最後のページに競合リストを表示します。例: 安全な削除リファクタリングをメソッドに適用するときに表示されるいくつかの競合を次に示します。競合には 2 つの型があります。コンパイルを中断することなく削除できる使用箇...
インターフェースの抽出リファクタリング
このリファクタリングは、選択した型に基づいて新しいインターフェースを作成できます。JetBrains Rider は、新しいインターフェースに転送するメンバーを選択することを提案しています。抽出後、元の型が更新され、新しいインターフェースが実装されます。現在の型がすでにインターフェースを実装している場合は、それらのインターフェースを新しいインターフェースに抽出することもできます。以下の例では、クラスのプロパティとメソッドが抽出され、新しいインターフェースが作成されます。class Circle...
「スーパークラスの抽出」リファクタリング
このリファクタリングを使用すると、選択したクラスから特定のメンバーを新しい基本クラスに抽出できます。元のクラスは、作成された基本クラスを拡張します。現在の型がすでにインターフェースを実装している場合、それらのインターフェースを新しい基本クラスに抽出することもできます。抽象クラスを作成する場合は、抽出されたメソッド abstract の少なくとも 1 つにマークを付けます。以下の例では、既存のクラスから抽象クラスを抽出します。public class Circle : IDrawable { pu...