ReSharper 2024.3 ヘルプ

クラスの抽出リファクタリング

このリファクタリングにより、既存のクラスのメンバーを新しいクラスに移動できます。複数のタスクを担当する単一のクラスを、それぞれが単一の責任を持つ複数のクラスに置き換える必要がある場合に役立ちます。

ReSharper は、新しく作成されたクラスへのアクセスを提供する参照フィールドを自動的に作成します。必要に応じて、元のクラスの抽出されたメンバーをコピーとして残すことも、実装が新しいクラスの同じメンバーに委譲されるようにすることもできます。

以下の例では、新しい Logger クラスに LogError メソッドを抽出します

class Shape { public void Draw() { try { /*draw*/ } catch (Exception e) { LogError(e); } } public static void LogError(Exception e) { File.WriteAllText(@"c:\Errors\Exception.txt", e.ToString()); } }
class Shape { public void Draw() { try { /*draw*/ } catch (Exception e) { Logger.LogError(e); } } } class Logger { public static void LogError(Exception e) { File.WriteAllText(@"c:\Errors\Exception.txt", e.ToString()); } }

選択したメンバーから新しいクラスを作成する

  1. 次のいずれかの方法で移動するクラスまたはメンバーを選択します。

    • エディターで、クラスまたはメンバーの名前にキャレットを置きます。

    • ファイル構造ウィンドウウィンドウでクラスまたはメンバーを選択します。

    • クラスビューでクラスまたはメンバーを選択します。

    • オブジェクトブラウザーでクラスまたはメンバーを選択します。

    • 型依存関係ダイアグラムでクラスまたはメンバーを選択します。

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

    • Control+Shift+R を押し、クラスの抽出を選択します。

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

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

    クラスの抽出ダイアログが開きます。

  3. 新しいクラスの名前とその配置場所(新しいファイルまたは元の型と同じファイル)を指定します。

  4. 新しいクラスに移動するメンバーを選択します。メンバーを選択すると、ReSharper は、選択したメンバーの使用箇所を持つ他のメンバーを抽出することを提案します。提案されたメンバーは、緑色の抽出ラベルで識別できます。

    この提案を受け入れる必要はありませんが、受け入れる場合は、提案されたすべてのメンバーを抽出するをクリックしてすべてを選択できます。

  5. 選択したすべてのメンバーには、ソースクラスメンバー列にセレクターがあります。メンバーを現在のクラスで直接使用できるようにする場合は、このセレクターをクリックして、メソッドとプロパティにデリゲートラッパーの作成を選択するか、プロパティとフィールドにコピー作成を選択します。

  6. 抽出しない他のメンバーが使用する非公開メンバーを抽出する場合、ReSharper は、抽出されたメンバーが非公開のままになっているとこれらの使用箇所が機能しないことを警告します。提案されたすべてのメンバーを抽出するをクリックして依存メンバーを選択するか、警告アイコンをクリックして、推奨される修正のいずれかを選択できます。

    ReSharper: Extract Class refactoring
  7. リファクタリングを適用するには、次へをクリックします。

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

ReSharper. Extract class refactoring

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

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

関連ページ:

クラスのインライン化リファクタリング

このリファクタリングでは、あるクラスを別のクラスにマージすることができます。マージするクラスは削除され、そのメンバーはマージされたクラスが使用されるクラスに移動され、マージされたクラスのすべての用途がそれに応じて更新されます。以下の例では、クラス(つまり、フィールドとメソッド)をクラスにマージします。class Painter { private Color myColor; public Painter(Color c) { myColor = c; InitPainter(myColor);...

構造別にファイルを移動する

ファイル構造ウィンドウ:ReSharper では、ファイル構造ウィンドウを使用して現在のドキュメントの構造を移動でき、大きなファイルでのナビゲーションが大幅に簡素化されます。ウィンドウはエディターと同期されます。別のエディタータブに切り替えると、ウィンドウには対応するファイルの構造が表示されます。ファイル構造ウィンドウを開いて使用するを押すか、メインメニューからを選択します。あるいは、を押して、ポップアップでコマンド名を入力して、そこで選択することもできます。現在のドキュメントの内容はツリー

型依存関係ダイアグラムを調べる

ReSharper を使用すると、ソリューション内で型が相互にどのように依存しているかを視覚的に調べることができます。さまざまなプロジェクトまたはコンパイルされたアセンブリから任意の数の型を型依存関係ダイアグラムに追加し、それらの間のさまざまな種類の依存関係を調べることができます。初期ダイアグラムを作成する:新しい型依存関係ダイアグラムを作成するには、いくつかの方法があります。ソリューションエクスプローラー、オブジェクトブラウザー、アーキテクチャエクスプローラー、クラスビュー、またはアセンブリ...

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

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

ASP.NET MVC 特有の機能

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

言語による ReSharper: MSBuild

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