IntelliJ IDEA 2020.3 ヘルプ

メソッドの抽出

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

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

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

メソッドを抽出するには:

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

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

  3. 表示されたダイアログで、表示設定、パラメーターなどのメソッドオプションを設定します。必要に応じてメソッドの名前を変更することもできます。

    Extract method dialog
    OK をクリックします。

  4. IntelliJ IDEA が抽出されたメソッドへの呼び出しで置き換えられる重複したコードフラグメントを検出すると、コードをプレビューし、それを並べて比較し、必要に応じて変更を加えることができます。重複したコードフラグメントを右クリックし、除外するを選択して、そのようなコードをリファクタリングから削除することもできます。

    Duplicate analysis
    準備ができたら、リファクタリング実行をクリックしてリファクタリングを完了します。

    重複が 1 つしかない場合、IntelliJ IDEA はサイレントに置き換えます。

    最後に、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 = a + b val d = a + b } private fun add(a: Int, b: Int) = a + b

関連ページ:

インテンションアクション

エディターで作業するときに、IntelliJ IDEA はコードを分析し、コードを最適化する方法を検索し、潜在的な問題と実際の問題を検出します。IDE がコードを変更する方法を見つけるとすぐに、エディターの現在の行の横に黄色いバルブアイコンが表示されます。このアイコンをクリックすると、このコード単位で使用可能なインテンションアクションを表示できます。インテンションアクションは、警告から最適化の提案まで、幅広い状況をカバーします。インテンションの完全なリストを表示し、設定 / 環境設定ダイアログ...

インライン化

インライン化リファクタリングを使用すると、メソッド、コンストラクター、パラメーター、スーパークラス、匿名クラス、変数のリファクタリングを元に戻すことができます。Java 14 バージョン以降、パターン変数をインライン化できます。この場合、すべての出現箇所が古いスタイルのキャスト式に置き換えられます。インライン化するコードフラグメント内にキャレットを配置します。を押します。または、メインメニューまたはコンテキストメニューからを選択します。インライン化ダイアログで、インライン化オプションを指定します...