IntelliJ IDEA 2024.3 ヘルプ

メソッドの抽出

メソッドの抽出リファクタリングを使用すると、グループ化できるコードフラグメントを取得し、別のメソッドに移動して、古いコードをメソッドの呼び出しに置き換えることができます。

メソッドを抽出するとき、変数を確認する必要があります。出力変数が 1 つの場合、抽出されたメソッドの戻り値として使用されます。複数の出力変数がある場合、メソッドの抽出リファクタリングが適用されず、エラーメッセージが表示されます。

この場合、メソッドの抽出を動作させるためのいくつかの回避策があります。例: すべての出力値を含む特別な data-class を導入することができます。

メソッドの抽出

  1. メソッドに抽出するコードフラグメントを選択します。

  2. Ctrl+Alt+M を押すか、メインメニューでリファクタリング | 抽出 | メソッドに移動します。

    または、コードフラグメントを選択したときに表示されるフローティングツールバーで、抽出をクリックし、メソッドを選択します。

  3. IntelliJ IDEA は、部分的にのみ重複しているコードを検出すると、リファクタリングを続行するためにパラメーターを抽出することを提案します。

    Partial duplicates

サンプル

a+b の式をメソッド(Kotlin の関数)に抽出し、重複を置き換えましょう。

public void method() { int a=1; int b=2; int c=a+b; int d=a+c; }
public void method() { int a=1; int b=2; int c=add(a,b); int d=add(a,c); } ... private int add(int a, int b) { return a+b; }

fun method(){ val a = 1 val b = 2 val c = a + b val d = a + b }
fun method(){ val a = 1 val b = 2 val c = add(a, b) val d = add(a, b) } private fun add(a: Int, b: Int) = a + b

Java レコードを使用してメソッドを抽出する

Java 16 バージョンから、Java レコードを使用してメソッドを抽出できます。複数の変数がある場合に役立つ場合があります。このような場合、IDE はまずこれらの変数を新しいレコードまたは bean クラスにラップしてからメソッド抽出を実行することを提案します。

Extract method using Java records
class SomeClass { public static void main(String[] args) { int values[] = {1, 2, 3, 4, 5}; int sum = 0; int num = 0; for (int n : values) { sum += n; num++; } System.out.println("Sum: " + sum + " - Num: " + num); } }
class SomeClass { public static void main(String[] args) { Statistics result = getStatistics(); System.out.println("Sum: " + result.sum() + " - Num: " + result.num()); } private static Statistics getStatistics() { int values[] = {1, 2, 3, 4, 5}; int sum = 0; int num = 0; for (int n : values) { sum += n; num++; } Statistics result = new Statistics(sum, num); return result; } private record Statistics(int sum, int num) { } }

関連ページ:

ソースコードの作成と編集

コードを使用する場合、IntelliJ IDEA は作業にストレスがないことを保証します。追加、選択、コピー、移動、編集、折りたたみ、出現箇所の検索、コードの保存に役立つさまざまなショートカットと機能を提供します。エディター内のナビゲーションについては、エディターの基本を参照してください。文字の入れ替えエディターで、交換する文字にキャレットを配置します。に移動します。このアクションのデフォルトのショートカットはありません。カスタムショートカットを割り当てることができます。フローティングツールバー...

インライン化

インライン化リファクタリングを使用すると、メソッド、コンストラクター、パラメーター、スーパークラス、匿名クラス、クロージャー (Swift の場合) の抽出リファクタリングを反転させることができます。Java 14 バージョン以降、パターン変数をインライン化できます。この場合、すべての出現箇所が古いスタイルのキャスト式に置き換えられます。インライン化するコードフラグメントにキャレットを配置します。を押します。または、コードフラグメントを右クリックして、メニューに移動します。必要なインラインリファ...