|
Słowo wstępne
Przedmowa
Co to jest refaktoryzacja? O czym jest ta książka? Dla kogo jest ta książka? Budowanie na fundamentach położonych przez innych Podziękowania
Rozdział 1: Refaktoryzacja, pierwszy przykład
Początek Pierwszy krok refaktoryzacji Podział i przemieszczanie metody zestawienie Zastąpienie kodu warunkowego w metodzie obliczającej opłatę przez polimorfizm Uwagi końcowe
Rozdział 2: Zasady refaktoryzacji
Definiowanie refaktoryzacji Po co refaktoryzować? Kiedy refaktoryzować? Co powiedzieć szefowi? Problemy napotykane podczas refaktoryzacji Refaktoryzacja a projekt Refaktoryzacja a efektywność Skąd się wzięła refaktoryzacja?
Rozdział 3: Brzydkie zapachy w kodzie (Kent Beck i Martin Fowler)
Powielony kod Długa metoda Duża klasa Długa lista parametrów Rozbieżna zmiana Poszatkowanie Zazdrość o kod Zbitki danych Obsesja typów podstawowych Instrukcje switch Równoległe hierarchie dziedziczenia Leniwa klasa Spekulatywna ogólność Pole tymczasowe Łańcuchy wywołań Pośrednik Zbytnia intymność Podobne klasy o różnych interfejsach Niepełne klasy biblioteczne Klasy danych Odrzucony spadek Komentarze
Rozdział 4: Tworzenie testów
Wartość samotestującego się kodu Testowanie za pomocą JUnit Tworzenie nowych testów
Rozdział 5: Budowa katalogu refaktoryzacji
Forma prezentacji Znajdowanie referencji Jak dojrzałe są prezentowane refaktoryzacje?
Rozdział 6: Tworzenie metod
Wydzielenie metody Rozwinięcie wywołań metody Rozwinięcie referencji do zmiennej tymczasowej Zastąpienie zmiennej tymczasowej przez zapytanie Utworzenie zmiennej objaśniającej Rozdzielenie zmiennej tymczasowej Usunięcie przypisań do parametrów Zastąpienie metody przez obiekt reprezentujący metodę Zastąpienie algorytmu
Rozdział 7: Przemieszczanie kodu między obiektami
Przemieszczenie metody Przemieszczenie pola Wydzielenie klasy Rozwinięcie klasy Ukrycie delegowania Usunięcie pośrednika Utworzenie metody obcej Utworzenie rozszerzenia lokalnego
Rozdział 8: Organizacja danych
Samoenkapsulacja pola Zastąpienie prostych danych przez obiekt Zmiana wartości w referencje Zmiana referencji w wartość Zastąpienie tablicy przez obiekt Powielenie widocznych danych Zmiana powiązania jednokierunkowego w dwukierunkowe Zmiana powiązania dwukierunkowego w jednokierunkowe Zastąpienie liczby magicznej przez stałą symboliczną Enkapsulacja pola Enkapsulacja kolekcji Zastąpienie rekordu przez klasę danych Zastąpienie liczby oznaczającej typ przez klasę Zastąpienie liczby oznaczającej typ przez podklasy Zastąpienie liczby oznaczającej typ przez wzorzec Stan/Strategia Zastąpienie podklasy przez poła
Rozdział 9: Upraszczanie wyrażeń warunkowych
Podział wyrażenia warunkowego Połączenie wyrażeń warunkowych Połączenie powielonych fragmentów wyrażeń warunkowych Usunięcie znacznika kontrolnego Zastąpienie zagnieżdżonych wyrażeń warunkowych przez klauzule dozorowane Zastąpienie wyrażenia warunkowego przez polimorfizm Użycie obiektu pustego Dodanie asercji
Rozdział 10: Upraszczanie wywołań metod
Zmiana nazwy metody Dodanie parametru Usunięcie parametru Oddzielenie zapytania od metody modyfikującej Parametryzacja metody Zastąpienie użycia parametru przez wyspecjalizowane metody Przekazanie całego obiektu Zastąpienie parametru przez metodę Utworzenie klasy dla grupy parametrów Usunięcie metody ustawiającej Ukrycie metody Zastąpienie konstruktora przez metodę wytwórczą Enkapsulacja rzutowania Zastąpienie kodu błędu przez wyjątek Zastąpienie wyjątku przez sprawdzenie warunku
Rozdział 11: Uogólnianie
Przemieszczenie pola w górę Przemieszczenie metody w górę Przemieszczenie treści konstruktora w górę Przemieszczenie metody w dół Przemieszczenie pola w dół Wydzielenie podklasy Wydzielenie nadklasy Wydzielenie interfejsu Zwinięcie hierarchii Utworzenie metody szablonowej Zastąpienie dziedziczenia przez delegowanie Zastąpienie delegowania przez dziedziczenie
Rozdział 12: Wielkie refaktoryzacje (Kent Beck i Martin Fowler)
Rozdzielenie hierarchii dziedziczenia Przekształcenie projektu proceduralnego w obiektowy Oddzielenie dziedziny od prezentacji Wydzielenie hierarchii
Rozdział 13: Refaktoryzacja, ponowne użycie kodu a rzeczywistość (William Opdyke)
Teoria a rzeczywistość Dlaczego programiści niechętnie refaktoryzują własne programy? Teoria a rzeczywistość (jeszcze raz) Dodatkowe informacje o refaktoryzacji Wpływ na ponowne użycie oprogramowania i przepływ technologii Uwaga końcowa Bibliografia
Rozdział 14: Narzędzia do refaktoryzacji (Don Roberts i John Brani)
Refaktoryzacja za pomocą narzędzia Kryteria techniczne dla narzędzia do refaktoryzacji Praktyczne kryteria dla narzędzia do refaktoryzacji Podsumowanie
Rozdział 15: Składanie wszystkiego razem (Kent Beck)
Bibliografia Lista wskazówek Skorowidz
|