メソッドの抽出リファクタリング
このリファクタリングにより、選択したコードフラグメントに基づいて新しいメソッドまたはローカル関数を作成できます。ReSharper は、選択されたステートメントを分析し、メソッドパラメーターに変換できる変数、またはその戻り値を表す変数を検出します。
次の例を考えてみましょう。メソッド PrintReversed()
は実際に 2 つのことを行います。文字列を反転して出力します。反転ロジック ( Console.WriteLine(reversed);
を除くすべてのステートメント) を選択し、このリファクタリングを使用してそのロジックを新しい PrintReversed()
メソッドに移動できます。
選択したステートメントからメソッドを抽出する
エディターで、ローカル関数に変換する 1 つ以上のステートメントを選択します。
以下のいずれか 1 つを実行します:
Control+Alt+M を押します。
Alt+Enter を押して、メソッドの抽出を選択します。
Control+Shift+R を押し、メソッドの抽出を選択します。
開いたポップアップで、ローカル関数の抽出を選択します。
抽出されたローカル関数を構成できるダイアログが表示されます。
新しいローカル関数の名前を名前フィールドに入力します。
ReSharper がリターンリスト内の可能な戻り値として検出した式の 1 つを選択します。他の式が戻り値として検出される可能性があります。これらは
out
パラメーターとしてリストされます。パラメーター領域の対応するチェックボックスを使用してパラメーターを含めるか除外します。リストからパラメーターを除外すると、必要に応じて同じ名前と型のローカル変数が作成されます。
パラメーターの順序を変更するには、リストでパラメーターを選択し、上へ移動および上へ移動ボタンを使用します。
static にするおよび / または仮想化するを選択して、対応する修飾子をメソッドに追加します。
必要に応じて、可視性リスト内のメソッドの表示 / 非表示を変更します。
プレビューフィールドで、結果として得られるローカル関数の署名と本体を確認します。
リファクタリングを適用するには、次へをクリックします。
競合が見つからない場合、ReSharper はすぐにリファクタリングを実行します。それ以外の場合は、競合を解決するように求められます。
選択したステートメントからローカル関数を抽出する
エディターで、ローカル関数に変換する 1 つ以上のステートメントを選択します。
以下のいずれか 1 つを実行します:
Control+Alt+M を押します。
Alt+Enter を押して、メソッドの抽出を選択します。
Control+Shift+R を押し、メソッドの抽出を選択します。
開いたポップアップで、ローカル関数の抽出を選択します。
ReSharper は、新しい関数の署名と場所のプレビューを表示します。
キーボードの Up および Down キーを使用して機能の目的の位置を変更し、Enter を押します。
抽出されたローカル関数を構成できるダイアログが表示されます。
新しいローカル関数の名前を名前フィールドに入力します。
ReSharper がリターンリスト内の可能な戻り値として検出した式の 1 つを選択します。他の式が戻り値として検出される可能性があります。これらは
out
パラメーターとしてリストされます。パラメーター領域の対応するチェックボックスを使用してパラメーターを含めるか除外します。リストからパラメーターを除外すると、必要に応じて同じ名前と型のローカル変数が作成されます。
パラメーターの順序を変更するには、リストでパラメーターを選択し、上へ移動および上へ移動ボタンを使用します。
プレビューフィールドで、結果として得られるローカル関数の署名と本体を確認します。
リファクタリングを適用するには、次へをクリックします。
競合が見つからない場合、ReSharper はすぐにリファクタリングを実行します。それ以外の場合は、競合を解決するように求められます。
この機能は、次の言語とテクノロジーでサポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。他の言語の詳細については、言語およびフレームワークセクションの対応するトピックを参照してください。
関連ページ:
メソッドリファクタリングのインライン化
このリファクタリングは、静的、インスタンス、拡張メソッドの使用箇所をその本体に置き換え、オプションで元のメソッド宣言を削除できます。このリファクタリングをバッキングフィールドのあるプロパティに適用することもできます。この場合、読み取りの使用箇所は getter 本体に置き換えられ、書き込みの使用箇所は setter 本体に置き換えられます。以下の例では、このリファクタリングを使用してメソッドをインライン展開します。abstract class Shape { public void Draw()...
リファクタリングの競合を解決する
ReSharper のすべてのリファクタリングはソリューション全体に適用されるため、多くのファイルが影響を受ける可能性があり、一部の変更は既存のコードと競合する可能性があります。競合がある場合、ReSharper はそれらを検出し、リファクタリングウィザードの最後のページに競合のリストを表示します。例: 安全な削除リファクタリングをメソッドに適用するときに表示されるいくつかの競合を次に示します。競合には 2 つの型があります。コンパイルを中断することなく削除できる使用箇所は、アイコンでマークされて...
ASP.NET MVC 特有の機能
ReSharper には、一般的な ASP.NET 機能に加えて、ASP.NET MVC での作業をより簡単にサポートする特殊機能があります。構文のハイライト:ASP.NET MVC メソッド呼び出しとパラメーターの特別な構文のハイライト: コード補完:文字列リテラルでアクションとコントローラーを参照するための専用コード補完: ナビゲーションと検索:さまざまなナビゲーション機能がアクションとコントローラーでも機能します。コード生成:使用箇所から新しいコントローラーとアクションを作成する: 最終...
言語による ReSharper: MSBuild
MSBuild は、アプリケーションを構築するために広く使用されているプラットフォームです。特定の XML タグを使用して、プロジェクトの構築方法や実行方法を定義できます。ReSharper を使用すると、より速く行うことができます。コード検査:あらかじめ定義された要素またはその属性の名前を誤って入力した場合、ReSharper はそのような不一致についてハイライト表示します。まだ定義されていないプロパティを参照しようとすると、ReSharper はそのようなケースも検出します。MSBuild...
言語による ReSharper: Google プロトコルバッファ (Protobuf)
ReSharper オプションのページで Protobuf サポートが明示的に有効になっている場合、ReSharper は Google Protocol Buffers (Protobuf) バージョン 2.x および 3.0 の .proto ファイルでコード分析および支援機能を提供します。ReSharper は、.proto ファイルの言語構文をハイライトし、エラーを検出してハイライトします。基本コード補完と他のタイピング支援機能はエディターで利用可能です。型と値の宣言に行き、それらの使用箇所を...
言語 JSON による ReSharper
JSON および JSON スキーマのサポートは、現在、構文のハイライト(古い Visual Studio バージョンを含む)のような基本的なものから、コードのフォーマットや再配置(たとえば、オブジェクトのプロパティや任意の選択を移動できる)、コードインスペクションおよびクイックフィックスなどのより高度な機能にまでおよびます。スキーマ、パス、正規表現、パッケージを認識するコード補完も同様です。JSON 値ヘルパー:ReSharper では、JSON プロパティの一部を特定の値タイプ(正規表現、...