Intellij-idea-code-refactoring
Intellij Idea-コードリファクタリング
この章では、コードリファクタリングと、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()*メソッドで変更を行います-
- 従業員の言葉を選択
- *リファクタリング→名前の変更*に移動し、名前を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 age)コンストラクターと public void setData(String name、String address、 int age)メソッドはまったく同じです。 リファクタリング後、Employee(String name、String address、int age)コンストラクターは次のように変更されます-
public Employee(String name, String address, int age) {
setData(name, address, age);
}
重複を置き換えるには-
- [リファクタリング]→[コード重複の検索と置換]に移動します。
- リファクタリングスコープを選択し、画面上の手順に従って操作を完了します。
リファクタリングのコピー
このセクションでは、あるクラスを別のクラスにコピーする方法を理解します。 EmployeeクラスをPersonクラスにコピーしてみましょう。 既存のモジュールまたは新しいモジュールにコピーできます。 IntelliJは、それに応じて必要な変更を行います。 コピーリファクタリングを実行するには、次の手順に従ってください-
- [リファクタリング]→[コピー]に移動すると、ダイアログボックスが開きます。
- 新しい名前と宛先パッケージを入力します。
- [OK]ボタンをクリックすると、必要な処理が行われます。
リファクタリングを移動する
移動リファクタリングはコピーと似ていますが、別のコピーを作成する代わりに、コードを別のパッケージに移動するか、別のクラスの内部クラスとして作成します。
移動リファクタリングを実行するには、次の手順に従ってください-
- [リファクタリング]→[移動]に移動します。
- 新しいウィンドウが表示されます。
- 選択に応じていずれかのオプションを選択し、「リファクタリング」をクリックします。
安全な削除
安全な削除アクションは、プロジェクト内で参照されていないオブジェクトのみを削除します。 このオプションのターゲットは、クラス、インターフェイス、メソッド、フィールド、またはパラメーターです。
これを実際に見てみましょう。 エディターで次のコードを入力します-
public class HelloWorld {
static void sayHello() {
System.out.println("Hello, World !!!");
}
public static void main(String[] args) {
sayHello();
}
}
安全な削除アクションを実行するには、次の手順に従ってください-
- * sayHello()*メソッドを選択します。
- それを右クリックし、*リファクタリング→安全な削除*オプションを選択します。
- sayHello()メソッドが使用されているため、次のようなエラーが表示されます スクリーンショット-
署名を変更
アクションはメソッドのシグネチャを変更します。 メソッド名、パラメーター、タイプ、戻り値などを変更できます。 上記の例からメソッドを取り、その署名を変更しましょう。
署名の変更アクションを実行するには、次の手順に従います-
- 方法を選択します。
- それを右クリックして、リファクタリング→署名の変更アクションを選択します
- 上記のアクションを実行できる新しいウィンドウが表示されます。
- ウィンドウの下部に、新しい署名のプレビューが表示されます。
タイプ移行
タイプの移行により、シンボルのタイプが変更されます。 このシンボルは、メソッドパラメーターまたはクラス属性にすることができます。 必要なアクションを実行する前に、次の方法を検討してみましょう-
static void sayHello(String name) {
System.out.println(name);
}
タイプの移行を実行するには、次の手順に従います-
- 「String」データ型を選択します。
- それを右クリックして、「リファクタリング」→「タイプ移行」を選択します。
- 所定のテキストボックスに必要なデータタイプを入力します。
- スコープを選択し、[リファクタリング]ボタンをクリックします。