Martin Fowler refaktoryzacja. ulepszanie struktury istniejącego kodu. wydanie ii pełna wersja.pdf

(3775 KB) Pobierz
Tytuł oryginału: Refactoring: Improving the Design of Existing Code (2nd Edition)
(Addison-Wesley Signature Series (Fowler))
Tłumaczenie: Andrzej Watrak, z wykorzystaniem fragmentów książki „Refaktoryzacja. Ulepszanie
struktury istniejącego kodu” w tłumaczeniu Justyny Walkowskiej.
ISBN: 978-83-283-5563-7
Authorized translation from the English language edition, entitled: Refactoring: Improving the Design
of Existing Code, 2nd Edition; by FOWLER, MARTIN;
published by Pearson Education, Inc, publishing as Addison-Wesley Professional. Copyright © 2019
Pearson Education, Inc.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording or by any information storage
retrieval system, without permission from Pearson Education, Inc.
Polish language edition published by HELION S.A. Copyright © 2019.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording or by any information storage
retrieval system, without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym
ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych
w książce.
Helion SA
ul. Kościuszki 1c, 44-100 Gliwice
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/refak2
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
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
Kup książkę
Poleć książkę
6
SPIS TRE CI
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
Kup książkę
Poleć książkę
SPIS TRE CI
7
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
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin