ReSharper 2024.1 ヘルプ

メソッドの抽出リファクタリング

このリファクタリングにより、選択したコードフラグメントに基づいて新しいメソッドまたはローカル関数を作成できます。ReSharper は、選択されたステートメントを分析し、メソッドパラメーターに変換できる変数、またはその戻り値を表す変数を検出します。

次の例を考えてみましょう。メソッド PrintReversed() は実際に 2 つのことを行います。文字列を反転して出力します。反転ロジック ( Console.WriteLine(reversed); を除くすべてのステートメント) を選択し、このリファクタリングを使用してそのロジックを新しい PrintReversed() メソッドに移動できます。

static void PrintReversed(string input) { var chars = input.ToCharArray(); Array.Reverse(chars); var reversed = new string(chars); Console.WriteLine(reversed); }
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; }

選択したステートメントからメソッドを抽出する

  1. エディターで、ローカル関数に変換する 1 つ以上のステートメントを選択します。

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

    • Control+Alt+M を押します。

    • Alt+Enter を押して、メソッドの抽出を選択します。

    • Control+Shift+R を押し、メソッドの抽出を選択します。

    • 右クリックして、コンテキストメニューからリファクタリング | メソッドの抽出を選択します。

    • メインメニューから ReSharper | リファクタリング | 抽出 | メソッドの抽出…を選択します。

  3. 開いたポップアップで、ローカル関数の抽出を選択します。

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

    ReSharper. Extract Method refactoring
  5. 新しいローカル関数の名前を名前フィールドに入力します。

  6. ReSharper がリターンリスト内の可能な戻り値として検出した式の 1 つを選択します。他の式が戻り値として検出される可能性があります。これらは out パラメーターとしてリストされます。

  7. パラメーター領域の対応するチェックボックスを使用してパラメーターを含めるか除外します。リストからパラメーターを除外すると、必要に応じて同じ名前と型のローカル変数が作成されます。

  8. パラメーターの順序を変更するには、リストでパラメーターを選択し、上へ移動および上へ移動ボタンを使用します。

  9. static にするおよび / または仮想化するを選択して、対応する修飾子をメソッドに追加します。

  10. 必要に応じて、可視性リスト内のメソッドの表示 / 非表示を変更します。

  11. プレビューフィールドで、結果として得られるローカル関数の署名と本体を確認します。

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

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

選択したステートメントからローカル関数を抽出する

  1. エディターで、ローカル関数に変換する 1 つ以上のステートメントを選択します。

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

    • Control+Alt+M を押します。

    • Alt+Enter を押して、メソッドの抽出を選択します。

    • Control+Shift+R を押し、メソッドの抽出を選択します。

    • 右クリックして、コンテキストメニューからリファクタリング | メソッドの抽出を選択します。

    • メインメニューから ReSharper | リファクタリング | 抽出 | メソッドの抽出…を選択します。

  3. 開いたポップアップで、ローカル関数の抽出を選択します。

  4. ReSharper は、新しい関数の署名と場所のプレビューを表示します。

    ReSharper: Extract local function refactoring

    キーボードの Up および Down キーを使用して機能の目的の位置を変更し、Enter を押します。

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

    ReSharper. Extract Method refactoring
  6. 新しいローカル関数の名前を名前フィールドに入力します。

  7. ReSharper がリターンリスト内の可能な戻り値として検出した式の 1 つを選択します。他の式が戻り値として検出される可能性があります。これらは out パラメーターとしてリストされます。

  8. パラメーター領域の対応するチェックボックスを使用してパラメーターを含めるか除外します。リストからパラメーターを除外すると、必要に応じて同じ名前と型のローカル変数が作成されます。

  9. パラメーターの順序を変更するには、リストでパラメーターを選択し、上へ移動および上へ移動ボタンを使用します。

  10. プレビューフィールドで、結果として得られるローカル関数の署名と本体を確認します。

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

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

この機能は、次の言語とテクノロジーでサポートされています。

ここで説明する手順と例では、C# の機能の使用について説明します。他の言語の詳細については、言語別 ReSharper セクションの対応するトピックを参照してください。

関連ページ:

メソッドリファクタリングのインライン化

このリファクタリングは、静的、インスタンス、拡張メソッドの使用箇所をその本体に置き換え、オプションで元のメソッド宣言を削除できます。このリファクタリングをバッキングフィールドのあるプロパティに適用することもできます。この場合、読み取りの使用箇所は getter 本体に置き換えられ、書き込みの使用箇所は setter 本体に置き換えられます。以下の例では、このリファクタリングを使用してメソッドをインライン展開します。abstract class Shape { public void Draw()...

リファクタリングの競合を解決する

ReSharper のすべてのリファクタリングはソリューション全体に適用されるため、多くのファイルが影響を受ける可能性があり、一部の変更は既存のコードと競合する可能性があります。競合がある場合、ReSharper はそれらを検出し、リファクタリングウィザードの最後のページに競合のリストを表示します。例: 安全な削除リファクタリングをメソッドに適用するときに表示されるいくつかの競合を次に示します。競合には 2 つの型があります。コンパイルを中断することなく削除できる使用箇所は、アイコンでマークされて...

ASP.NET MVC 特有の機能

ReSharper には、一般的な ASP.NET 機能に加えて、ASP.NET MVC での作業をより簡単にサポートする特殊機能があります。構文のハイライト:ASP.NET MVC メソッド呼び出しとパラメーターの特別な構文のハイライト: コード補完:文字列リテラルでアクションとコントローラーを参照するための専用コード補完: ナビゲーションと検索:さまざまなナビゲーション機能がアクションとコントローラーでも機能します。コード生成:使用箇所から新しいコントローラーとアクションを作成する: 最終...

言語による ReSharper: MS ビルド

MSBuild は、アプリケーションを構築するために広く使用されているプラットフォームです。特定の XML タグを使用して、プロジェクトの構築方法や実行方法を定義できます。ReSharper を使用すると、より速く行うことができます。コード検査:あらかじめ定義された要素またはその属性の名前を誤って入力した場合、ReSharper はそのような不一致についてハイライト表示します。まだ定義されていないプロパティを参照しようとすると、ReSharper はそのようなケースも検出します。MSBuild...

言語による ReSharper: Google プロトコルバッファ (プロトブフ)

ReSharper は、Google プロトコルバッファ(Protobuf)バージョン 2.x および 3.0 の .proto ファイルで IDE サポートを提供します。ReSharper は、.proto ファイルの言語構文をハイライトし、エラーを検出してハイライトします。基本コード補完と他のタイピング支援機能はエディターで利用可能です。型と値の宣言に行き、それらの用法を検索し、他のナビゲーション機能を楽しむことができます。Protobuf コードを再フォーマットしてシンボルの名前を変更することも...

言語 JSON による ReSharper

JSON および JSON スキーマのサポートは、現在、構文のハイライト(古い Visual Studio バージョンを含む)のような基本的なものから、コードのフォーマットや再配置(たとえば、オブジェクトのプロパティや任意の選択を移動できる)、コードインスペクションおよびクイックフィックスなどのより高度な機能にまでおよびます。スキーマ、パス、正規表現、パッケージを認識するコード補完も同様です。JSON 値ヘルパー:ReSharper では、JSON プロパティの一部を特定の値タイプ(正規表現、...