コードリファクタリング
リファクタリング(英語)は、新しい機能を作成せずにソースコードを改善するプロセスです。リファクタリングは、コードを安定させ、dry(英語) に保ち、保守を容易にできます。
リファクタリングの呼び出し
リファクタリングするアイテムを選択します。エディターでプロジェクトツールウィンドウまたは式 / シンボルでファイル / フォルダーを選択できます。
選択可能なリファクタリングのリストを開くには、Control+Alt+Shift+T を押します。
または、特定のリファクタリング用のキーボードショートカットを使用することもできます。
フィールドのカプセル化、static メンバーの移動、委譲の抽出、インターフェースの抽出、スーパークラスの抽出などの拡張範囲のリファクタリング操作用にマルチキャレット選択を作成することもできます。この機能を利用するには、リファクタリングを適用する各メンバーにキャレットを配置します。IDE はリファクタリングダイアログでこれらのメンバーを自動的に事前選択してチェックします。
リファクタリングを元に戻す必要がある場合は、Control+Z を押します。
構造ツールウィンドウからリファクタリングを呼び出す
左側のツールバーで「
」をクリックして、構造ツールウィンドウを開きます。
構造ツールウィンドウで、リファクタリングアクションを呼び出すメソッドまたはフィールドを選択し、右クリックして、コンテキストメニューから適用するリファクタリングの名前を選択します。
リファクタリングの変更をプレビューする
一部のリファクタリングでは、IntelliJ IDEA を使用して変更を適用する前に変更をプレビューできます。
リファクタリングプレビューダイアログでプレビューをクリックすると、潜在的な変更 (リファクタリングが実行される使用箇所のリスト) が表示されます。
開いた検索ツールウィンドウで、行われる変更を確認します。Delete を除外したり、不要と思われる Control+X の変更を削除したりできます。
リファクタリング実行をクリックして、変更を続行します。
競合の解決
IntelliJ IDEA があなたのリファクタリングで問題に遭遇すると、衝突のリストとそれらの簡単な説明があるダイアログを開きます。
![競合のリファクタリングダイアログ Refactoring confilicts dialog](https://resources.jetbrains.com/help/img/idea/2023.2/refactoring_confilicts_dialog.png)
続行をクリックして問題を無視し、検索ツールウィンドウでプレビューを開きます。
ビューで競合を表示をクリックして、検索ツールウィンドウの競合エントリを開き、さらに処理します。
例: Delete を押すかキャンセルをクリックしてリファクタリングからエントリを除外し、エディターに戻ることができます。
リファクタリング設定を構成する
設定ダイアログ(Control+Alt+S)で、 を選択します。
コード編集ページのリファクタリングセクションでリファクタリングオプションを調整し、OK をクリックします。
IntelliJ IDEA でサポートされている最も人気のあるリファクタリング
安全な削除 | Alt+Delete | ソースコードで参照されているファイルを削除しないようにします。 | |
コピー / 移動 | F5 / F6 | 要素をコピー / 移動します。 | |
メソッドの抽出 | Control+Alt+M | これらのリファクタリングアクションは、コードの重複を減らすのに役立ちます。 | |
定数の抽出 | Control+Alt+C | ||
フィールドの導入 | Control+Alt+F | ||
パラメーターの抽出 | Control+Alt+P | ||
変数の導入 | Control+Alt+V | ||
名前変更 | Shift+F6 | 要素の名前を変更します。 | |
インライン化 | Control+Alt+N | 要素をインライン化します。抽出の逆の働きをします。 | |
シグネチャーの変更 | Control+F6 | メソッドまたはクラスの呼び出しシグネチャーを変更します。 |
関連ページ:
![](https://pleiades.io/icons/idea.png)
複数のカーソルと選択範囲
IntelliJ IDEA エディターで入力、コピー、貼り付けを行う場合、複数のカーソルを切り替えて、アクションが複数の場所に同時に適用されるようにすることができます。コード補完やライブテンプレートなどの高度なエディターアクションもサポートされており、各キャレットに適用されます。ファイルに追加できるキャレットの数は 1000 に制限されています。この制限を増やす場合は、カスタム JVM オプションを開き、次の行を追加します: 最近追加されたキャレットはプライマリと見なされます。現在のエディターライ...
![](https://resources.jetbrains.com/help/img/idea/2023.2/move_static_members.png)
移動およびコピーリファクタリング
コピーリファクタリングでは、別のパッケージにクラスのコピーを作成できます。また、ファイル、ディレクトリ、パッケージのコピーを別のディレクトリまたはパッケージに作成することもできます。コピーを実行するリファクタリングリファクタリングする識別子(エディター内のクラスまたはプロジェクトツールウィンドウ内のファイルなど)を選択します。に移動するか、を押します。コピーダイアログで、コピーの名前と場所を指定し、OK をクリックします。移動リファクタリングを使用すると、パッケージとクラスをプロジェクトのソース...
![](https://resources.jetbrains.com/help/img/idea/2023.2/extract_method_dialog.png)
メソッドの抽出
メソッドの抽出リファクタリングを使用すると、グループ化できるコードフラグメントを取得し、別のメソッドに移動して、古いコードをメソッドの呼び出しに置き換えることができます。メソッドを抽出するとき、変数を確認する必要があります。出力変数が 1 つの場合、抽出されたメソッドの戻り値として使用されます。複数の出力変数がある場合、メソッドの抽出リファクタリングが適用されず、エラーメッセージが表示されます。この場合、メソッドの抽出を動作させるためのいくつかの回避策があります。例: すべての出力値を含む特別な...
![](https://resources.jetbrains.com/help/img/idea/2023.2/extract_constant.png)
定数の抽出
定数の抽出リファクタリングにより、ソースコードを読みやすく保守しやすくなります。また、ハードコードされた定数を値や目的について何の説明もしないで使用するのを避けるのに役立ちます。エディターで、定数で置き換えたい変数の式または宣言を選択します。を押して定数を入力するか、を選択します。表示されたリストから名前を選択するか、自分の名前を入力してを押します。または、を 2 回押して定数の抽出ダイアログを開き、そこでやにしたり、定数を別のクラスに移動するなど、定数の追加オプションを指定できます。サンプ...
![](https://resources.jetbrains.com/help/img/idea/2023.2/extract_field_dialog.png)
フィールドの導入
フィールドの導入リファクタリングでは、新しいフィールドを宣言し、選択した式で初期化することができます。元の式はフィールドの使用箇所に置き換えられます。その場でフィールドを抽出するフィールドに抽出するコード部分内にキャレットを置きます。を押すか、に進みます。導入する式をフィールドとして選択します。IntelliJ IDEA がコード内で複数の出現箇所を検出した場合、どの出現箇所を置き換えるかを指定できます。を 2 回押してフィールドの導入ダイアログを開くと、可視性オプションや変数を初期化するための...
![](https://resources.jetbrains.com/help/img/idea/2023.2/introduce_variable_occurrences_scope.png)
変数の抽出 / 導入
変数の抽出リファクタリングは、わかりにくい式や重複している式があった場合に、その式の結果やその一部を、より複雑でなくわかりやすい別の変数に格納することで、その問題に対処するためのものです。さらに、コードの重複を減らすことができます。Java 1.8 以降のバージョンから、IntelliJ IDEA では機能型変数も抽出できます。Java バージョンがパターンマッチング(Java 14 プレビュー以降)をサポートしていて、チェックでキャスト式を抽出している場合、IntelliJ IDEA は、通...