EDIT: Tôi đã gửi Eclipse enhancement request for this refactoring.Tái cấu trúc để di chuyển một trường riêng tư từ một lớp đến lớp trợ giúp của nó?
Có cách nào để di chuyển trường riêng tư từ một lớp này sang lớp trợ giúp khác không? UML dưới đầu gà cho thấy những gì tôi đang làm bằng tay ngay bây giờ. Lớp C1
có riêng tư field
và tham chiếu cuối cùng riêng tư đối tượng Helper
trước khi tái cấu trúc.
Sau khi tái cấu trúc, tất cả các tham chiếu trong C1'
đến field
được đổi thành helper.getField()
và helper.setfield()
nếu thích hợp.
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;
}
}
Tôi đã sử dụng khả năng sắp xếp của Eclipse khá một chút, nhưng tôi không thể tìm ra một cách để tự động này.
Ví dụ, lý tưởng tôi sẽ kéo lĩnh vực/thuộc tính/viên tin từ nhóm này sang nhóm khác và hy vọng rằng Eclipse hỏi tôi làm thế nào tôi muốn để xử lý các tài liệu tham khảo chưa được giải quyết. Nó cung cấp không có đề xuất và phá vỡ tất cả các tài liệu tham khảo.
Hoạt động mà tôi đã lặp lại là phân tách kiến thức và hành vi không thực sự thuộc về lớp hiện tại. Tôi đang di chuyển các thuộc tính và hành vi tham chiếu các trường nhất định ra khỏi lớp gốc thành một lớp "helper" mới.
Bước đầu tiên trong việc tái cấu trúc của tôi là di chuyển các trường. Một tham chiếu đến lớp helper tồn tại như một trường trong lớp tôi đang tái cấu trúc từ. Để không phá vỡ C1
trong quá trình tái cấu trúc, tôi nghĩ sẽ tốt hơn nếu Eclipse cung cấp getters và setters trong Helper'
và cập nhật các tham chiếu trong C1
để sử dụng getters/setters trong lớp mới.
Để biết thông tin, bạn đang sử dụng phiên bản Eclipse nào? – romaintaz
3.5, nhưng tôi sẽ thử nâng cấp lên 3.6 nếu tính năng này được cải thiện. Tuy nhiên, tôi đọc các ghi chú phát hành và nó xuất hiện ít thay đổi trong 3.6 liên quan đến tái cấu trúc. –