Refactoring - jakich opcji szukac?

0

Witam,
Jak wiadomo kazde IDE ma lepsze i gorsze opcje refaktoringu, a ja jako poczatkujacy programista nie jestem w tym zbyt biegly, ale bardzo chce sie nauczyc.

Mam nastepujaca sytuacje: jest duza klasa, ktora implementuje kilkadziesiat interfejsow. IMO spokojnie moze zostac rozbita na co najmniej kilka mniejszych interfejsow no i ich implementacji, gdyz jest to DAO do bazy danych, w zaleznosci od tego czego konkretnie dotycza metody jak dla mnie moga trafic do oddzielnej klasy.

Czy NetBeans IDE posiada opcje refactoringu, ktora pozwoli mi wyodrebnic fragment klasy, podmeni tez zaleznosci we wszystkich innych projektach (w tym aplikacji internetowej) poza EJB? Jak ta opcja sie nazywa? Czy jestem skazany na reczne dlubanie, kopiowanie i przenoszenie klas?

Pozdrawiam,

0

Tutaj jest trochę opisane: http://wiki.netbeans.org/Refactoring
Ale ogólnie dużo tych opcji jest, sprawdź to -> prawy nacisk myszy aż się pali :)

0

Sprobowalem opcji extract interface i jestem nieusatysfakcjonowany: owszem interfejsy zostaly ladnie podzielone na mniejsze, a stary interfejs po prostu rozszerza wiele interfejsow. Ale lepszy rydz niz nic: w jakis sposob ulatwia to refaktoring.

Pozdrawiam.

0

W tym przypadku należy zastosować kilka różnych refaktoryzacji. Pierwszą z nich jest przeniesienie metody (move method). Metody z danego interfejsu należy przenieść do nowej klasy.

  1. Tworzysz klasę abstrakcyjną AImpl implementującą interfejs A (nie dodajesz metod i olewasz błędy kompilacji jak na razie).
  2. W klasie Mess (ta rozbijamy) wykonujesz refaktoryzację move method - wskazujesz metody z interfejsu A i przenosisz je do klasy AImpl. Oryginalne metody zostają jako delegaty:
private A aImpl = new AImpl();
void methodFromA(){
   aImpl.methodFromA();
}

robisz to dla każdego z interfejsów, które chcesz usunąć.

Kolejna jest usunięcie implementacji.

  1. Usuwasz informację, że klasa Mess implementuje A i usuwasz wszystkie metody z A. w prywatnych polach pozostaje AImpl.
  2. Kompilujesz - otrzymujesz listę błędów.
  3. Zamieniasz odwołania do Mess na odwołania do AImpl. Opcjonalnie usuwasz wszystkie odwołania do Mess i AImpl z Mess uznaczone jako unused.

//edit:
Pamiętaj o napisaniu testów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1