IntellijIdea-コードリファクタリング
この章では、コードリファクタリングとそれがIntelliJでどのように機能するかについて学習します。コードリファクタリングとは、機能や使いやすさを変えずにコードを再構築することです。コードのリファクタリングは、コードの可読性、パフォーマンスを向上させるため、または未使用/重複する機能を削除するために実行できます。IntelliJは、コードリファクタリングを強力にサポートします。この章では、さまざまなコードリファクタリングアクションについて説明します。
名前を変更する
名前変更アクションを使用して、メソッド、そのパラメーター、クラス属性、ローカル変数などの名前を変更できます。IntelliJで次のクラスを作成しましょう。
public class Employee {
private String name;
private String address;
private int age;
public Employee() {
this("Jarvis", "Palo Alto", 35);
}
public Employee(String name, String address, int age) {
this.name = name;
this.address = address;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
", age=" + age +
'}';
}
public static void main(String args[]) {
Employee e = new Employee();
System.out.println(e);
}
}
では、名前を変更しましょう Employee クラスへ Person。このアクションは、コンストラクターとmain() 方法−
従業員の単語を選択
に移動 Refactor → Rename 名前をPersonに変更します。
コードの重複を置き換える
これは、強力なリファクタリングアクションの1つです。IntelliJは重複するコードを識別し、適切なコードに置き換えます。コードの重複を導入してリファクタリングしましょう。エディタに次のコードを入力します-
public class Employee {
private String name;
private String address;
private int age;
public Employee() {
this("Jarvis", "Palo Alto", 35);
}
public Employee(String name, String address, int age) {
this.name = name;
this.address = address;
this.age = age;
}
public void setData(String name, String address, int age) {
this.name = name;
this.address = address;
this.age = age;
}
public void showEmployeeDetail() {
System.out.println("Name = " + name + ", Address = " + address + ", Age = " + age);
}
public static void main(String args[]) {
Employee e = new Employee();
e.showEmployeeDetail();
}
}
この例では、Employee(String name、String address、 int 年齢)コンストラクターと public void setData(文字列名、文字列アドレス、 int年齢)方法はまったく同じです。リファクタリング後、Employee(String name、String address、int age)コンストラクターは次のように変更されます-
public Employee(String name, String address, int age) {
setData(name, address, age);
}
重複を置き換えるには-
リファクタリング→コードの重複の検索と置換に移動します。
リファクタリングスコープを選択し、画面の手順に従ってアクションを完了します。
コピーリファクタリング
このセクションでは、あるクラスを別のクラスにコピーする方法を理解します。EmployeeクラスをPersonクラスにコピーしましょう。既存のモジュールまたは新しいモジュールにコピーできます。IntelliJはそれに応じて必要な変更を行います。次の手順に従って、コピーリファクタリングを実行します-
に移動 Refactor → Copy、ダイアログボックスが開きます。
新しい名前と宛先パッケージを入力します。
[OK]ボタンをクリックすると、必要な処理が実行されます。
移動リファクタリング
移動リファクタリングはコピーに似ていますが、別のコピーを作成する代わりに、コードを別のパッケージに移動するか、別のクラスの内部クラスとして作成します。
次の手順に従って、移動リファクタリングを実行します-
[リファクタリング]→[移動]に移動します。
新しいウィンドウが表示されます。
選択に応じてオプションの1つを選択し、リファクタリングをクリックします。
安全な削除
安全な削除アクションは、プロジェクト内のどこにも参照されていない場合にのみオブジェクトを削除します。このオプションのターゲットは、クラス、インターフェース、メソッド、フィールド、またはパラメーターです。
これを実際に見てみましょう。エディタに次のコードを入力します-
public class HelloWorld {
static void sayHello() {
System.out.println("Hello, World !!!");
}
public static void main(String[] args) {
sayHello();
}
}
次の手順に従って、安全な削除アクションを実行します-
を選択 sayHello() 方法。
それを右クリックして、 Refactor → Safe Delete オプション。
sayHello()メソッドが使用されているため、次のスクリーンショットのようにエラーが表示されます-
署名の変更
このアクションは、メソッドのシグネチャを変更します。メソッド名、そのパラメーター、タイプ、戻り値などを変更できます。上記の例のメソッドを使用して、そのシグネチャを変更してみましょう。
次の手順に従って、署名の変更アクションを実行します-
方法を選択します。
それを右クリックして、リファクタリング→署名の変更アクションを選択します
上記のアクションを実行できる新しいウィンドウが表示されます。
ウィンドウの下部に、新しい署名のプレビューが表示されます。
タイプの移行
タイプの移行により、シンボルのタイプが変更されます。このシンボルは、メソッドパラメータまたはクラス属性にすることができます。必要なアクションを実行する前に、次の方法を検討しましょう-
static void sayHello(String name) {
System.out.println(name);
}
タイプの移行を実行するには、次の手順に従います-
「文字列」データ型を選択します。
それを右クリックして、 Refactor → Type migration。
所定のテキストボックスに必要なデータ型を入力します。
スコープを選択し、リファクタリングボタンをクリックします。