Refactoring in eclipse Mąkosa Norbert Rospądek Bartłomiej.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

C++ wykład 4 ( ) Przeciążanie operatorów.
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Wzorce.
Zrównoleglanie programu sekwencyjnego
MS Access 2003 Kwerendy Paweł Górczyński.
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
20/09/ Języki programowania 1 Piotr Górczyński Kreator form.
Szkolenie dla NaviExpert, Wprowadzenie do refaktoryzacji.
Refaktoryzacja czyli odświeżanie kodu
Struktury.
C++ wykład 2 ( ) Klasy i obiekty.
Typy prywatne 1 Typy prywatne W Adzie typy prywatne (private types) służą do bezpiecznego udostępniania danych zdefiniowanych w pakiecie, z którego korzysta.
Projektowanie i programowanie obiektowe II - Wykład IV
Algorytmy.
Projektowanie - wprowadzenie
Jak korzystać z programu peer-to-peer Na przykładzie programu eMule.
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
Tworzenie nowych kont lokalnych i domenowych, oraz zarządzanie nimi
Moduł Lojalnościowy. Czyli zatrzymanie klienta przy naszym zakładzie optycznym.
ANNA BANIEWSKA SYLWIA FILUŚ
System raportowania, ewaluacji oraz badania satysfakcji Klienta.
MAKRA 1.
Wzorce slajdów, animacje, różne orientacje slajdów
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Korespondencja seryjna
Arkusz kalkulacyjny MS Excel
Tytuł:Poradnik do programu PowerPoint?
Operacje edycyjne w bazie danych - kwerendy funkcjonalne Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
Programowanie obiektowe 2013/2014
MICROSOFT Access TWORZENIE MAKR
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.

Kurs języka C++ – wykład 3 ( )
Programowanie w języku C++
Wzorce slajdów programu microsoft powerpoint
Wprowadzenie do spisów treści j a następnie naciśnij klawisz F5 lub kliknij pozycję Pokaz slajdów > Od początku, aby rozpocząć kurs. Na pasku komunikatów.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Smart Portal – podstawy użytkowania. W celu uruchomienia aplikacji Smart Portal, należy: -uruchomić nowe okno przeglądarki internetowej, -wpisać w pole.
Excel Wykresy – różne typy, wykresy funkcji.
Walidacja danych alina suchomska.
Visual Basic w Excelu - podstawy
Wzorce slajdów, animacje, różne orientacje slajdów
Bartosz Michalik Jakub Jurkiewicz Sponsor główny: Eclipse IDE Zanim rozpoczniemy naszą pracę...
Beata Sanakiewicz. Spis treści  Łączenie dokumentów Łączenie dokumentów  Mechanizm OLE Mechanizm OLE  Obiekt osadzony Obiekt osadzony  Obiekt połączony.
Formatowanie dokumentów
SAMOUCZEK PRZYKŁAD ZASTOSOWANIA PROGRAMU DO MODELOWANIA TARCZ.
PRZYKŁAD ROZWIĄZANIA KRATOWNICY
Programowanie Zaawansowane
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Tworzenie wykresów część I
Przewodnik Wprowadzenie do
Microsoft® Office Word
Czym s ą i do czego słu żą ? Narzędzie analityczne arkusza kalkulacyjnego pozwalające filtrować, wybierać, przestawiać kolumny i wiersze z danymi w arkuszu.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Temat: Tworzenie bazy danych
Wykład 4 Dr Aneta Polewko-Klim
AudaPad / AudaShare AudaShare PRO (2.8)
Programowanie obiektowe – zastosowanie języka Java SE
Wyższa Szkoła Ekologii i Zarządzania
Refaktoryzacja czyli odświeżanie kodu
Zapis prezentacji:

Refactoring in eclipse Mąkosa Norbert Rospądek Bartłomiej

Plan Co to jest i jak działa refactoring ? Metody dostępne w eclipse Opis metod wraz z przykładami zastosowania.

Refactoring (lub refaktoring, refaktoryzacja) to pojęcie związane z wytwarzaniem systemów informatycznych, w szczególności z programowaniem. Jest to proces wprowadzania zmian w projekcie/programie, w wyniku którego zasadniczo nie zmienia się jego funkcjonalność. Celem refactoringu jest więc nie wytwarzanie nowej funkcjonalności, ale utrzymywanie odpowiedniej, wysokiej jakości organizacji systemu.

Dzięki refactoringowi w systemie ogranicza się redundancje (nadmiarowość, np. istnienie wielu obiektów i procedur o takiej samej lub bardzo zbliżonej funkcjonalności, a mających niezależne implementacje) i narzuca standardy. W przypadku systemów o architekturach wielowarstwowych refactoring jest jednym z czynników gwarantujących zachowanie silnej separacji warstwy systemu i ich przejrzystej struktury.

W ramach refactoringu podejmowane są następujące działania: modyfikowanie elementów systemu w celu wpasowania ich w przyjęte standardy i wzorce, poszukiwanie nowych standardów i wzorców, które pojawiają się w systemie w trakcie jego rozwoju i ich precyzyjne definiowanie.

Refactoring jest kosztowny, ale jest istotnym elementem zarządzania projektem informatycznym. W szczególności przy dużych i złożonych projektach koszt dobrze prowadzonego refactoringu powinien być zrekompensowany dużo niższym kosztem wprowadzenia późniejszych zmian w projekcie, szczególnie zmian o charakterze globalnym (przekrojowym), dotykających wielu modułów funkcjonalnych jednocześnie. W przypadku projektów obarczonych dużym ryzkiem niepowodzenia (np. z powodu niestabilnych wymagań funkcjonalnych klienta) regularnie prowadzony refactoring wydaje się nieodzowny.

Istotą refaktoryzacji jest przeprowadzenie zmiany w sposób bezpieczny, to znaczy utrzymujący dotychczasową funkcjonalność zmienianego fragmentu programu. Istniej, a dwie podstawowe metody weryfikacji poprawności przekształceń: analiza własnościzmienianego kodu oraz testowanie jednostkowe wprowadzonych zmian.

Analiza warunków wstępnych i końcowych Analiza kodu programu sprowadza się do wyznaczenia dla każdego przekształcenia refaktoryzacyjnego warunków wstępnych oraz końcowych, które muszą być spełnione, aby zmiana by la poprawna. Warunki te to najczęściej statyczne własności klasy lub metody (np. jej relacje dziedziczenia, powiązania z innymi elementami systemu), dlatego ich weryfikacji w większości przypadków możedokonać kompilator lub analizator składniowy.

Testowanie jednostkowe Drugą metod, a weryfikacji poprawności przekształceń refaktoryzacyjnych są testy jednostkowe (ang. unit tests). Są one implementowane na przykład przy użyciu bibliotek z serii xUnit, (np. JUnit). Ich podstawowym przeznaczeniem jest regresyjna weryfikacja poprawności działania poszczególnych metod - czyli stwierdzenie, czy wprowadzane zmiany nie zmieniaj, a ich zachowania. Ta ich cecha jest wykorzystywana przy refaktoryzacji oprogramowania - stanowi, a one niezmienniki przekształceń: testy muszą być spełnione zarówno przed, jak i po przeprowadzeniu zmiany.

Typy refaktoryzacji dostępne w eclipse : 1. Physical Structure 2.Class Level Structure 3.Structure inside a Class

Physical Structure : Rename Move Change Method Signature Convert Anonymous Class to Nested Convert Nested Type to Top Level (Eclipse 2 only) Move Member Type to New File (Eclipse 3 only)

Class Level Structure : Push Down Pull Up Extract Interface Generalize Type (Eclipse 3 only) User Supertype Where Possible

Structure inside a Class : Inline Extract Method Extract Local Variable Extract Constant Introduce Parameter (Eclipse 3 only) Introduce Factory (Eclipse 3 only) Encapsulate Field

Ładowanie projektu Pobieramy przygotowany plik. Uruchamiamy środowisko Eclipse.

Ładowanie projektu Wybieramy menu File  Import W otwartym oknie wybieramy.

Ładowanie projektu Ostatecznie ładujemy nasz projekt na którym będziemy pracować.

Refactoring - Wyłączenie metody Wyłączanie metody (ang. Extract Method) jest najprostszym przekształceniem refaktoryzacyjnym. Jest stosowane zwykle w stosunku do metod o zbyt dużej złożoności lub zbyt długich. W projekcie SuDoKu znajdujemy metodę o dużej złożoności (o wysokiej wartości z łożoności McCabe’a), np. wybieramy plik src.com.vitting.rcpsudoku.model.SudokuDocument.j ava.

Refactoring - Wyłączenie metody

Następnie z menu kontekstowego wybierz opcję Refactor!ExtractMethod. Pojawi się okienko, w którym należy wprowadzić nazwę metody (np. canReadVerification w przypadku klasy SudokuDocument) oraz jej zakres widoczności. Należy zwrócić uwagę, że parametry metody są obliczane automatycznie na podstawie zmiennych zdefiniowanych poza zaznaczonym fragmentem, a do których istnieją odwołania wewnątrz niego.

Klikamy klawisz Preview - zostanie wówczas wyświetlona nowotworzona metoda. Klikamy klawisz OK - wówczas zostanie utworzona nowa metoda o podanej nazwie, a w miejscu zaznaczonego fragmentu kodu zostanie umieszczone wywołanie tej metody.

Refactoring - Zmiana sygnatury metody Przekształcenie to jest złożeniem dwóch refaktoryzacji: dodania parametru i usunięcia parametru, a także pozwala zmieniać typ metody i zasięg jej widoczności. Służy właśnie do modyfikowania tych elementów metody, w tym przede wszystkim listy parametrów przekazywanych metodzie. Wskazujemy kursorem sygnaturę metody save() w pliku src.com.vitting.rcpsudoku.jfc.actions.SaveAction.java

Następnie z menu kontekstowego wybierz opcję Refactor!Change Method Signature

Pojawi się okienko, w którym możesz zmodyfikować wspomniane wcześniej wartości Dodaj do sygnatury nowy parametr typu Object o nazwie obj. domyślną wartości, a może być dowolne wyrażenie, którego wartość jest określonego typu (w tym przypadku Object), np. new Object()

Kliknij klawisz Preview. Pojawi się okienko z listą plików, które zostaną zmodyfikowane, oraz zakres zmian w każdym pliku. Kliknij OK. Sygnatura metody zostanie zmodyfikowana, a wszystkie wywołania tej metody zostaną poszerzone o nowy argument o wartości new Object().

Move Przekształcenie to służy do przeniesienia składowej (pola lub metody) do innej klasy. Stosowane jest zwykle w sytuacji, gdy odwołania do tej składowej w większości pochodzą z innej klasy. W przypadku składowej statycznej może ona zostać przeniesiona do dowolnej klasy.

Wskaż kursorem dowolną składową statyczną (np. pole WINDOW WIDTH w klasie src.com.vitting.sudoku.jfc.GuiPersistence Z menu kontekstowego wybierz opcję Refactor!Move Pojawi się okienko z prośbą o wskazanie klasy, do której składowa ma zostać przeniesiona.

Możemy np. wybrać klase com.vitting.rcpsudoku.jfc.MainWindow. Klikając Preview. Pojawi się okienko podglądu z list, a modyfikowanych klas oraz zakresem zmian. Klikając OK. Składowa zostanie przeniesiona.

Natomiast w przypadku składowych niestatycznych (tzn. należących do instancji klasy) składowa może zostać przeniesiona do obiektu, który jest polem klasy źródłowej (jest to jedyna możliwość w przypadku przenoszenia pól) lub argumentem przenoszonej metody (w przypadku przenoszenia metody). Wskaż kursorem metodę isEditMode() linia 556 w klasie com.vitting.sudoku.jfc.MainWindow, Z menu kontekstowego wybierz opcję Refactor  Move Pojawi się okienko, w którym zostaną wyświetlone potencjalne klasy docelowe (w tym przypadku będą to wy łącznie pola klasy źródłowej, ponieważ przenoszona metoda nie posiada argumentów). Okienko to pozwala na zmianę nazwy metody podczas przenoszenia oraz określenie nazwy parametru z obiektem źródłowym

Klikając Preview. Zostanie wyświetlone ostrzeżenie o zmianę zasięgu widoczności pola editMode. Klikamy Continue, Zostanie wyświetlona lista zmodyfikowanych klas wraz z zakresem zmian. Klikamy OK. Metoda zostanie przeniesiona

Refactoring - Rozwinięcie Przekształcenie to służy do rozwinięcia zmiennej (ang. Inline Temp) lub metody (ang. Inline Method), czyli jest komplementarne np. w stosunku do przekształcenia Extract Method. Wskaż kursorem wywołanie metody setMessage(message, NORMAL) w metodzie setMessage(String) linia 600 w klasie com.vitting.sudoku.jfc.MainWindow Z menu kontekstowego wybierz opcję Refactor  Inline Pojawi się okienko, w którym należy dokonać wyboru pomiędzy zastąpieniem wszystkich wywołań tej metody jej ciałem, czy tylko wskazanego wywołania. W przypadku wyboru wszystkich wywołań metoda setMessage(String, int) stanie się nie wykorzystywana i będzie mogła być usunięta. Wybierz opcję All Invocations

Pojawi się okienko podglądu z list, a modyfikowanych klas i zmianami, jakie zostaną wprowadzone. Zauważamy, że rozwijana metoda została usunięta (jeżeli w poprzednim kroku zaznaczono opcję usunięcia metody).

Do tej kategorii należą przekształcenia Pull up i Push down. Służą one odpowiednio do przeniesienia składowej do nadklasy lub do podklasy. W obu przypadkach podstawowym warunkiem wykonania przekształcenia jest istnienie w projekcie odpowiednio nadklasy (lub implementowanego interfejsu) i podklasy w postaci żródłowej.

Wskaż kursorem metodę save() w klasie com.vitting.sudoku.jfc.actions.SaveAction Z menu kontekstowego wybierz opcję Refactor  Pull Up Pojawi się okienko, w którym należy wskazać docelowy typ, do którego ma być przeniesiona metoda. W tym przypadku jedynym dopuszczalnym typem jest interfejs IAction Klikając kolejno klawisze Next wykonujemy przekształcenie.

Dziękujemy za uwagę