Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.

Podobne prezentacje


Prezentacja na temat: "Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler."— Zapis prezentacji:

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


Pobierz ppt "Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler."

Podobne prezentacje


Reklamy Google