はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Rider】メソッド抽出(extract method)というリファクタリング機能がとても便利

はじめに

今回はメソッド抽出(extract method)というRiderのリファクタリング機能について紹介したいと思います。

pleiades.io

メソッドの抽出をしている様子

概要

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)を押した後に、メソッドの抽出を選択します。

alt + Enterを押す

メソッドの抽出を選択すると、メソッドの抽出ローカル関数の抽出の選択肢が出てきます。

メソッドの抽出を選択する

メソッドの抽出を選択すると皆さんがよくイメージするように外に切り出し、ローカル関数の抽出を選択するとメソッド内にメソッドの定義を行うような形になります。
ローカル関数 - C# プログラミング ガイド | Microsoft Learn

メソッドの抽出

メソッドの抽出を選択すると、下記のようなウィンドウが立ち上がり、メソッド名・パラメーター・返り値・アクセス修飾子、staticvirtualの設定をします。

メソッド名、パラメーターや返り値、アクセス修飾子などの設定ができる

後は次へを押せば、自動でメソッドを抽出してくれます。

メソッド抽出した様子

ローカル関数の抽出

ローカル関数の抽出を選択すると、ローカル関数をどこに定義するのかまず質問されます。

ローカル関数をどこに定義するか

適当に選択した後は、先程のメソッドの抽出の際とほとんど変わりません。(パラメーターと返り値のみ設定できる)

パラメーターと返り値を設定する
ローカル関数の抽出をした様子