Refaktoryzacja. Ulepszanie struktury istniejącego kodu. Wydanie II - Helion
ebook
Autor: Martin FowlerISBN: 978-83-283-5564-4
Format: ebook
Data wydania: 2019-05-01
Księgarnia: Helion
Cena książki: 59,25 zł (poprzednio: 79,00 zł)
Oszczędzasz: 25% (-19,75 zł)
Osoby które kupowały "Refaktoryzacja. Ulepszanie struktury istniejącego kodu. Wydanie II", wybierały także:
- Cisco CCNA 200-301. Kurs video. Administrowanie bezpieczeństwem sieci. Część 3 665,00 zł, (39,90 zł -94%)
- Cisco CCNA 200-301. Kurs video. Administrowanie urządzeniami Cisco. Część 2 665,00 zł, (39,90 zł -94%)
- Cisco CCNA 200-301. Kurs video. Podstawy sieci komputerowych i konfiguracji. Część 1 665,00 zł, (39,90 zł -94%)
- Impact of P2P and Free Distribution on Book Sales 427,14 zł, (29,90 zł -93%)
- Cisco CCNP Enterprise 350-401 ENCOR. Kurs video. Programowanie i automatyzacja sieci 443,33 zł, (39,90 zł -91%)
Spis treści
Refaktoryzacja. Ulepszanie struktury istniejącego kodu. Wydanie II eBook -- spis treści
Słowo wstępne do pierwszego wydania 9
Przedmowa 11
- Czym jest refaktoryzacja? 12
- Co zawiera ta książka? 12
- Kto powinien przeczytać tę książkę? 13
- Podstawowe prace wykonane przez innych 14
- Podziękowania 15
1. Refaktoryzacja: pierwszy przykład 17
- Punkt wyjścia 17
- Uwagi na temat przykładowego programu 19
- Pierwszy krok refaktoryzacji 20
- Dekompozycja funkcji statement 21
- Aktualny stan: mnóstwo zagnieżdżonych funkcji 37
- Rozdzielenie faz obliczeń i formatowania 39
- Aktualny stan: podział na dwa pliki (i fazy) 46
- Uporządkowanie obliczeń według typów przedstawień 48
- Aktualny stan: tworzenie danych za pomocą polimorficznego kalkulatora 55
- Podsumowanie 57
2. Zasady refaktoryzacji 59
- Definicja refaktoryzacji 59
- Dwa kapelusze 60
- Po co refaktoryzować? 60
- Kiedy refaktoryzować? 63
- Problemy z refaktoryzacją 68
- Refaktoryzacja, architektura i yagni 73
- Refaktoryzacja i szerszy proces tworzenia oprogramowania 74
- Refaktoryzacja a wydajność 75
- Skąd się wzięła refaktoryzacja? 77
- Refaktoryzacja automatyczna 78
- Dalsze kroki 80
3. Brzydkie zapaszki w kodzie 81
- Tajemnicza nazwa 82
- Zduplikowany kod 82
- Długa funkcja 82
- Długa lista parametrów 83
- Dane globalne 84
- Dane mutowalne 84
- Rozbieżne zmiany 85
- Fala uderzeniowa 85
- Zazdrosne funkcjonalności 86
- Stada danych 86
- Opętanie typami prostymi 87
- Powtarzane instrukcje warunkowe 87
- Pętle 88
- Leniwa klasa 88
- Spekulacyjne uogólnienia 88
- Pole tymczasowe 89
- Łańcuchy komunikatów 89
- Pośrednik 89
- Niestosowna bliskość 90
- Duża klasa 90
- Alternatywne klasy z różnymi interfejsami 91
- Klasa danych 91
- Odmowa przyjęcia spadku 91
- Uwagi 92
4. Testy 93
- Zalety samotestującego się kodu 93
- Prosty kod do przetestowania 95
- Pierwszy test 97
- Dodanie następnego testu 100
- Modyfikacja danych początkowych 102
- Sprawdzanie warunków granicznych 102
- Dalsze kroki 105
5. Katalog przekształceń refaktoryzacyjnych 107
- Format opisu przekształceń 107
- Wybór przekształceń 108
6. Pierwszy pakiet przekształceń 109
- Ekstrakcja Funkcji 110
- Wchłonięcie Funkcji 118
- Ekstrakcja Zmiennej 122
- Wchłonięcie Zmiennej 126
- Zmiana Deklaracji Funkcji 127
- Enkapsulacja Zmiennej 134
- Zmiana Nazwy Zmiennej 139
- Wprowadzenie Obiektu Parametrycznego 142
- Zebranie Funkcji w Klasę 146
- Zebranie Funkcji w Transformatę 151
- Podział na Fazy 156
7. Enkapsulacja 161
- Enkapsulacja Rekordu 162
- Enkapsulacja Kolekcji 170
- Zastąpienie Typu Prostego Obiektem 174
- Zastąpienie Zmiennej Tymczasowej Zapytaniem 178
- Ekstrakcja Klasy 182
- Wchłonięcie Klasy 186
- Ukrycie Delegata 189
- Usunięcie Pośrednika 192
- Zastąpienie Algorytmu 195
8. Przenoszenie funkcjonalności 197
- Przeniesienie Funkcji 198
- Przeniesienie Pola 206
- Przeniesienie Instrukcji do Funkcji 211
- Przeniesienie Instrukcji do Kodu Wywołującego 215
- Zastąpienie Wchłoniętego Kodu Wywołaniem Funkcji 220
- Przesunięcie Instrukcji 221
- Podział Pętli 225
- Zastąpienie Pętli Potokiem 229
- Usunięcie Martwego Kodu 234
9. Porządkowanie danych 235
- Podział Zmiennej 236
- Zmiana Nazwy Pola 240
- Zastąpienie Wyliczanej Zmiennej Zapytaniem 244
- Zamiana Referencji na Wartość 248
- Zamiana Wartości na Referencję 252
10. Upraszczanie wyrażeń warunkowych 255
- Dekompozycja Instrukcji Warunkowej 256
- Scalenie Instrukcji Warunkowej 259
- Zastąpienie Zagnieżdżonej Instrukcji Warunkowej Instrukcją Wyjścia 262
- Zastąpienie Instrukcji Warunkowej Polimorfizmem 267
- Wprowadzenie Przypadku Specjalnego 283
- Wprowadzenie Asercji 296
11. Refaktoryzacja interfejsu API 299
- Rozdzielenie Zapytania i Modyfikacji 300
- Parametryzacja Funkcji 303
- Usunięcie Parametru-Flagi 307
- Przekazanie Całego Obiektu 312
- Zastąpienie Parametru Zapytaniem 317
- Zastąpienie Zapytania Parametrem 320
- Usunięcie Funkcji Ustawiającej Wartość 324
- Zastąpienie Konstruktora Funkcją Wytwórczą 327
- Zastąpienie Funkcji Poleceniem 330
- Zastąpienie Polecenia Funkcją 336
12. Praca z hierarchią klas 341
- Przesunięcie Metody w Górę Hierarchii 342
- Przesunięcie Pola w Górę Hierarchii 345
- Przesunięcie Ciała Konstruktora w Górę Hierarchii 347
- Przesunięcie Metody w Dół Hierarchii 351
- Przesunięcie Pola w Dół Hierarchii 352
- Zastąpienie Kodu Typu Podklasami 353
- Usunięcie Podklasy 360
- Ekstrakcja Nadklasy 366
- Zwinięcie Hierarchii 371
- Zastąpienie Podklasy Delegatem 372
- Zastąpienie Nadklasy Delegatem 390
Bibliografia 395
Skorowidz 398