refaktoryzacja. ulepszanie struktury istniejącego kodu helion.pdf

(22740 KB) Pobierz
887756388.001.png
Spis treci
Sowowstpne..........................................................................................................9
Przedmowa..............................................................................................................11
Czym jest refaktoryzacja? ............................................................................................................................12
Co zawiera ta ksika? .................................................................................................................................12
Kto powinien przeczyta t ksik? .........................................................................................................13
Podstawowe prace wykonane przez innych ...............................................................................................14
Podzikowania ..............................................................................................................................................14
1. Refaktoryzacja: pierwszy przykad ......................................................................17
Punkt wyjcia ................................................................................................................................................17
Pierwszy krok refaktoryzacji .......................................................................................................................22
Dekompozycja i redystrybucja metody statement ....................................................................................22
Zastpienie warunkowej logiki wyznaczania ceny polimorfizmem ........................................................39
Podsumowanie ..............................................................................................................................................48
2. Zasady refaktoryzacji .............................................................................................49
Definicja refaktoryzacji ...............................................................................................................................49
Po co refaktoryzowa? .................................................................................................................................50
Kiedy refaktoryzowa? ................................................................................................................................52
Co mam powiedzie kierownikowi? ...........................................................................................................54
Problemy z refaktoryzacj ...........................................................................................................................56
Refaktoryzacja a projektowanie ..................................................................................................................59
Refaktoryzacja a wydajno .........................................................................................................................61
Skd si wzia refaktoryzacja? ...................................................................................................................62
3. Brzydkie zapaszki w kodzie ..................................................................................65
Zduplikowany kod .......................................................................................................................................66
Duga metoda ...............................................................................................................................................66
Dua klasa .....................................................................................................................................................67
Duga lista parametrów ...............................................................................................................................68
Rozbiene zmiany ........................................................................................................................................68
Fala uderzeniowa .........................................................................................................................................69
Zazdrosne metody ........................................................................................................................................69
Stada danych .................................................................................................................................................69
887756388.002.png
 
6
SPIS TRECI
Optanie prymitywami ................................................................................................................................70
Instrukcje switch ..........................................................................................................................................70
Równolege hierarchie dziedziczenia .........................................................................................................71
Leniwa klasa .................................................................................................................................................71
Spekulacyjne uogólnienia ............................................................................................................................71
Pole tymczasowe ...........................................................................................................................................72
acuchy komunikatów ..............................................................................................................................72
Porednik ......................................................................................................................................................73
Niestosowna blisko ...................................................................................................................................73
Alternatywne klasy z rónymi interfejsami ...............................................................................................73
Niekompletna klasa biblioteczna ...............................................................................................................73
Klasa opakowujca dane ..............................................................................................................................74
Odmowa przyjcia spadku ...........................................................................................................................74
Uwagi ..........................................................................................................................................................75
4. Testy .........................................................................................................................77
Zalety samotestujcego si kodu .................................................................................................................77
Testy jednostkowe JUnit .............................................................................................................................79
Wicej testów ................................................................................................................................................84
5. Katalog przeksztace refaktoryzacyjnych .........................................................89
Format opisu przeksztace ........................................................................................................................89
Odnajdywanie odwoa ...............................................................................................................................90
Dojrzao przeksztace .............................................................................................................................91
6. Konstrukcja metod .................................................................................................93
Ekstrakcja Metody .......................................................................................................................................94
Wchonicie Metody ..................................................................................................................................100
Wchonicie Zmiennej Tymczasowej ......................................................................................................102
Zastpienie Zmiennej Tymczasowej Zapytaniem ..................................................................................103
Wprowadzenie Zmiennej Objaniajcej ..................................................................................................107
Podzia Zmiennej Tymczasowej ...............................................................................................................111
Eliminacja Przypisywania Wartoci Parametrom ..................................................................................114
Zastpienie Metody Obiektem .................................................................................................................118
Zastpienie Algorytmu ..............................................................................................................................121
7. Przenoszenie skadowych pomidzy obiektami ...............................................123
Przeniesienie Metody ................................................................................................................................124
Przeniesienie Pola ......................................................................................................................................128
Ekstrakcja Klasy .........................................................................................................................................131
Wchonicie Klasy .....................................................................................................................................135
Ukrycie Delegata ........................................................................................................................................138
Usunicie Porednika ................................................................................................................................141
Wprowadzenie Obcej Metody ...................................................................................................................143
Wprowadzenie Rozszerzenia Lokalnego .................................................................................................145
8. Organizacja danych ..............................................................................................151
Samoenkapsulacja Pola ..............................................................................................................................153
Zastpienie Typu Prostego Obiektem .....................................................................................................156
Zamiana Wartoci na Referencj ..............................................................................................................159
Zamiana Referencji na Warto ................................................................................................................163
Zastpienie Tablicy Obiektem ..................................................................................................................166
7
SPIS TRECI
Duplikacja Obserwowanych Danych .......................................................................................................169
Zamiana Asocjacji Jednokierunkowej na Dwukierunkow ...................................................................176
Zamiana Asocjacji Dwukierunkowej na Jednokierunkow ...................................................................179
Zastpienie Magicznej Liczby Sta Symboliczn ..................................................................................183
Enkapsulacja Pola ......................................................................................................................................184
Enkapsulacja Kolekcji ...............................................................................................................................185
Zastpienie Rekordu Klas z Danymi .....................................................................................................193
Zastpienie Kodu Typu Klas ..................................................................................................................194
Zastpienie Kodu Typu Podklasami ........................................................................................................199
Zastpienie Kodu Typu Wzorcem Stan lub Strategia ............................................................................202
Zastpienie Podklasy Polami ....................................................................................................................207
9. Upraszczanie wyrae warunkowych ................................................................211
Dekompozycja Instrukcji Warunkowej ...................................................................................................212
Scalenie Instrukcji Warunkowej ..............................................................................................................214
Scalenie Zduplikowanych Fragmentów Instrukcji Warunkowej .........................................................217
Usunicie Flagi Kontrolnej ......................................................................................................................219
Zastpienie Zagniedonej Instrukcji Warunkowej Instrukcj Wyjcia ..............................................224
Zastpienie Instrukcji Warunkowej Polimorfizmem .............................................................................229
Wprowadzenie Obiektu Pustego ..............................................................................................................233
Wprowadzenie Asercji ...............................................................................................................................240
10. Upraszczanie wywoa metod ............................................................................243
Zmiana Nazwy Metody .............................................................................................................................245
Dodanie Parametru ....................................................................................................................................247
Usunicie Parametru .................................................................................................................................249
Rozdzielenie Zapytania i Modyfikacji .....................................................................................................251
Parametryzacja Metody .............................................................................................................................255
Zastpienie Parametru Metodami o Rónych Nazwach ........................................................................257
Przekazanie Caego Obiektu .....................................................................................................................260
Zastpienie Parametru Metod .................................................................................................................263
Wprowadzenie Obiektu Parametrycznego ..............................................................................................266
Usunicie Metody Ustawiajcej Warto .................................................................................................270
Ukrycie Metody ..........................................................................................................................................273
Zastpienie Konstruktora Metod Wytwórcz .......................................................................................274
Enkapsulacja Rzutowania w Dó Hierarchii ...........................................................................................278
Zastpienie Kodu Bdu Wyjtkiem ........................................................................................................280
Zastpienie Wyjtku Testem ....................................................................................................................285
11. Praca z hierarchi dziedziczenia ........................................................................289
Przesunicie Pola w Gór Hierarchii .......................................................................................................290
Przesunicie Metody w Gór Hierarchii .................................................................................................291
Przesunicie Ciaa Konstruktora w Gór Hierarchii .............................................................................294
Przesunicie Metody w Dó Hierarchii ...................................................................................................297
Przesunicie Pola w Dó Hierarchii .........................................................................................................298
Ekstrakcja Podklasy ...................................................................................................................................299
Ekstrakcja Nadklasy ..................................................................................................................................304
Ekstrakcja Interfejsu ..................................................................................................................................308
Zwinicie Hierarchii ..................................................................................................................................311
Utworzenie Metody Szablonowej .............................................................................................................312
Zastpienie Dziedziczenia Delegacj .......................................................................................................319
Zastpienie Delegacji Dziedziczeniem ....................................................................................................322
8
SPIS TRECI
12. Due przeksztacenia ...........................................................................................325
Rozpltanie Hierarchii Dziedziczenia .....................................................................................................327
Przeksztacenie Projektu Proceduralnego na Obiekty ...........................................................................332
Oddzielenie Dziedziny od Prezentacji .....................................................................................................334
Ekstrakcja Hierarchii .................................................................................................................................338
13. Refaktoryzacja i reuywalno a rzeczywisto ...............................................343
Zejcie na ziemi ........................................................................................................................................344
Dlaczego programici nie chc refaktoryzowa wasnych programów? .......................................................345
Zejcie na ziemi (raz jeszcze) ...................................................................................................................354
Materiay na temat refaktoryzacji .............................................................................................................355
Sugestie na temat wielokrotnego wykorzystania kodu i transferu technologii ...................................355
Na koniec ....................................................................................................................................................356
Bibliografia .................................................................................................................................................356
14. Narzdzia refaktoryzacyjne ................................................................................359
Refaktoryzacja z wykorzystaniem narzdzia ...........................................................................................359
Techniczne kryteria narzdzia refaktoryzacyjnego ................................................................................360
Praktyczne kryteria narzdzia refaktoryzacyjnego .................................................................................362
Podsumowanie ............................................................................................................................................363
15. Wykorzystanie zdobytej wiedzy .........................................................................365
Bibliografia ...........................................................................................................369
Lista refaktoryzacji .............................................................................................373
Brzydkie zapaszki i ich przeksztacenia ...........................................................375
Skorowidz .............................................................................................................377
Zgłoś jeśli naruszono regulamin