編集:このリファクタリングの Eclipse 拡張要求を送信しました。
プライベート フィールドをあるクラスからそのヘルパー クラスに移動する方法はありますか? 以下のチキンスクラッチ UML は、私が現在手動で行っていることを示しています。クラスには、リファクタリング前のオブジェクト へのC1
非公開field
および非公開の最終参照があります。Helper
リファクタリング後、C1'
toのすべての参照は必要に応じてandfield
に変更されます。helper.getField()
helper.setfield()
class Field {}
class C1 {
final private Field field;
final private Helper helper;
public Field getField() {
return field;
}
public C1() {
helper = new Helper();
field = new Field();
}
}
class Helper {}
class C1Prime {
final private HelperPrime helper;
public Field getField() {
return helper.getField();
}
public C1Prime() {
helper = new HelperPrime();
}
}
class HelperPrime {
final private Field field;
public HelperPrime() {
field = new Field();
}
public Field getField() {
return field;
}
}
私は Eclipse のリファクタリング機能をかなり使ってきましたが、これを自動化する方法がわかりません。
たとえば、理想的には、プライベート フィールド/属性/メンバーをあるクラスから別のクラスにドラッグし、未解決の参照をどのように処理したいか Eclipse から尋ねられることを期待します。それは提案を提供せず、すべての参照を壊します。
私が繰り返してきた操作は、現在のクラスに実際には属していない知識と行動を分離することです。特定のフィールドを参照する属性と動作を元のクラスから新しい「ヘルパー」クラスに移動しています。
私のリファクタリングの最初のステップは、フィールドを移動することです。ヘルパー クラスへの参照は、リファクタリング元のクラスのフィールドとして存在します。リファクタリング中に壊れないようにするため に、Eclipse が getter と setter を生成し、参照を更新して新しいクラスで getter/setter を使用することC1
を提案してくれたらいいと思います。Helper'
C1