Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałIwona Filipiak Został zmieniony 8 lat temu
1
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler
2
Refaktoryzacja – podstawowe zasady Zmiana wewnętrznej struktury kodu Brak zmiany zachowania Składa się z serii niewielkich transformacji Czyści kod minimalizują ryzyko wstawienia bug-a
3
Po co ? Aby ułatwić wprowadzanie zmian Aby poprawić konstrukcję Aby lepiej poznać kod Aby praca z kodem była przyjemna
4
Zapachy kodu Duplicated code Long methods Large class Long parameter List Feature Envy Switch Statements Lazy Class Comments i parę innych
5
Refaktoring Zidentyfikuj problem Napisz testy Przeprowadź refaktoring Sprawdź działanie
6
Metody Extract method void printOwing(double amount) { printBanner(); //print details System.out.println ("name:" + _name); System.out.println ("amount" + amount); } void printOwing(double amount) { printBanner(); printDetails(amount); } void printDetails (double amount) { System.out.println ("name:" + _name); System.out.println ("amount" + amount) }
7
Metody Inline Method int getRating() { return (moreThanFiveLateDeliveries()) ? 2 : 1; } boolean moreThanFiveLateDeliveries() { return _numberOfLateDeliveries > 5; } int getRating() { return (_numberOfLateDeliveries > 5) ? 2 : 1; }
8
Metody Replace Temp with Query double basePrice = _quantity * _itemPrice; if (basePrice > 1000) return basePrice * 0.95; else return basePrice * 0.98; if (basePrice() > 1000) return basePrice() * 0.95; else return basePrice() * 0.98;... double basePrice() { return _quantity * _itemPrice; }
9
Metody cd. Inline Temp Introduce Explaining Variable Remove Assignments to Parameters Replace Method with Method Object Substitute Algorithm
10
Pomiędzy obiektami Move method
11
Pomiędzy obiektami Extract Class
12
Pomiędzy obiektami Hide Delegate
13
Pomiędzy obiektami Move field Inline Class Remove Middle Man – odwrotność Hide Delegate Introduce Foreign Method Introduce Local Extension
14
Organizacja danych Replace Data with Object
15
Organizacja danych Replace Array with Object String[] row = new String[3]; row [0] = "Liverpool"; row [1] = "15"; Performance row = new Performance(); row.setName("Liverpool"); row.setWins("15");
16
Organizacja danych Duplicate Observed Data
17
Organizacja danych Encapsulate Collection
18
Organizacja danych Replace Type Code with Strategy
19
Organizacja danych Self Encapsulate Field Change Value to Reference Change Reference To Value Replace Magic Number with Symbolic Constant Encapsulate Field Replace Type Code with Class
20
Upraszczanie wyrażeń Consolidate Duplicate Conditional Fragment if (isSpecialDeal()) { total = price * 0.95; send(); } else { total = price * 0.98; send(); } if (isSpecialDeal()) total = price * 0.95; else total = price * 0.98; send();
21
Upraszczanie wyrażeń Replace Conditional With Polymorphism double getSpeed() { switch (_type) { case EUROPEAN: return getBaseSpeed(); case AFRICAN: return getBaseSpeed() - getLoadFactor() * _numberOfCoconuts; case NORWEGIAN_BLUE: return (_isNailed) ? 0 : getBaseSpeed(_voltage); } throw new RuntimeException ("Should be unreachable"); }
22
Upraszczanie Wyrażeń Inroduce Null Object if (customer == null) plan = BillingPlan.basic(); else plan = customer.getPlan();
23
Upraszczenie wyrażeń Introduce Assertion Remove Control Flag Consolidate Conditional Expression Decompose Conditional
24
Uproszczenie wywołań Rename Method
25
Uproszczenie wywołań Parametrize Method
26
Upraszczanie wywołań Add Parameter Remove Parameter Replace Parameter with Explicit Method Replace Parameter with Method Replace Error Code with Exception Replace Exception With Test
27
Dziedziczenie Pull Up Field
28
Dziedziczenie Push Down Method
29
Dziedziczenie Extract Superclass
30
Dziedziczenie Form Template Method
31
Dziedziczenie Pull Up Method Pull Up Constructor Body Extract Subclass Push Down Field Extract Interface Collapse Hierarchy Replace Inheritance with Delegation
32
Refaktoring baz danych Ewolucja schematu Zapachy bazodanowe Kolumny i tabele z więcej niż jednym przeznaczeniem Nadmiarowe dane Zbyt dużo kolumn „Inteligentne” kolumy
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.