Refaktoryzacja do wzorców projektowych - Helion
Tytuł oryginału: Refactoring to Patterns
Tłumaczenie: Paweł Koronkiewicz
ISBN: 83-7361-930-5
stron: 320, Format: B5, okładka: miękka
Data wydania: 2005-10-10
Księgarnia: Helion
Cena książki: 54,90 zł
Zmodernizuj kod swoich aplikacji
pod kątem stosowania wzorców projektowych
- Dowiedz siÄ™, czym jest refaktoryzacja
- Poznaj zasady stosowania wzorców projektowych
- Wprowadź wzorce projektowe do kodu źródłowego aplikacji
Refaktoryzacja to zmiana konstrukcji kodu bez modyfikowania jego działania. Najczęstszym powodem refaktoryzowania kodu jest konieczność jego "uporządkowania" lub usunięcia z niego funkcji niewykorzystywanych w projekcie. Często również stosuje się refaktoryzację, aby zmodernizować kod pod kątem zastosowania w nim wzorców projektowych. Wprowadzenie wzorców projektowych do kodu znacznie ułatwia jego późniejsze modyfikacje i ewentualne rozbudowy. Stosowanie technik programowania ekstremalnego nierozerwalnie wiąże ze sobą wzorce projektowe i refaktoryzację kodu.
Książka "Refaktoryzacja do wzorców projektowych" opisuje teoretyczne i praktyczne zagadnienia związane z refaktoryzowaniem kodu pod kątem wzorców projektowych. Przedstawia opisy niskopoziomowych przekształceń, które umożliwiają programiście bezpieczną zmianę konstrukcji kodu prowadzącą do zaimplementowania bądź usunięcia określonych wzorców z programu. Zawiera również szczegółowy opis łączenia tych przekształceń w procesie refaktoryzacji oraz sposobów implementowania wzorców w kodzie. Każde z omówionych w książce przekształceń zostało zilustrowane praktycznymi przykładami.
- Podstawowe zasady refaktoryzacji
- Zasady stosowania wzorców projektowych
- Najczęstsze powody wprowadzania wzorców do kodu
- Implementowanie wzorców projektowych
- Zmiany sposobów tworzenia obiektów
- Upraszczanie i uogólnianie kodu
Jeśli chcesz zmodernizować kod swoich aplikacji,
w tej książce znajdziesz wszystkie informacje na ten temat.
Osoby które kupowały "Refaktoryzacja do wzorców projektowych", wybierały także:
- Ruby on Rails. Ćwiczenia 18,75 zł, (3,00 zł -84%)
- Zen Steve'a Jobsa 29,67 zł, (8,90 zł -70%)
- ASP.NET MVC. Kompletny przewodnik dla programistów interaktywnych aplikacji internetowych w Visual Studio 86,77 zł, (26,90 zł -69%)
- TDD. Sztuka tworzenia dobrego kodu 48,54 zł, (19,90 zł -59%)
- GitHub. Przyjazny przewodnik 32,90 zł, (16,45 zł -50%)
Spis treści
Refaktoryzacja do wzorców projektowych -- spis treści
Przedmowa Ralpha Johnsona (11)
Przedmowa Martina Fowlera (13)
Wstęp (15)
- O czym jest ta książka? (15)
- Jaki jest cel tej książki? (15)
- Dla kogo jest ta książka? (16)
- Co trzeba wiedzieć? (16)
- Jak korzystać z tej książki? (17)
- Historia tej książki (17)
- Na ramionach gigantów (18)
- Podziękowania (18)
1. Dlaczego napisałem tę książkę (21)
- Planowanie na wyrost (21)
- Wzorce jako panaceum (22)
- Brak właściwego planowania (23)
- Programowanie sterowane testami i ciągła refaktoryzacja (24)
- Refaktoryzacja i wzorce (25)
- Projektowanie jako proces ewolucyjny (26)
2. Refaktoryzacja (27)
- Czym jest refaktoryzacja? (27)
- Dlaczego refaktoryzujemy? (28)
- Co dwie głowy... (29)
- Kod czytelny dla człowieka (29)
- PorzÄ…dek (30)
- Zasada maÅ‚ych kroków (31)
- DÅ‚ug konstrukcyjny (32)
- Rozwijanie architektury (33)
- Przekształcenia złożone i oparte na testach (33)
- Zalety przekształceń złożonych (34)
- Narzędzia do refaktoryzacji (35)
3. Wzorce (37)
- Czym jest wzorzec projektowy? (37)
- Fan wzorców (38)
- Jest wiele sposobów implementowania każdego wzorca (40)
- Zmiana "do", "w stronÄ™" i "od" wzorca (42)
- Czy wzorce zwiększają złożoność kodu? (43)
- Znajomość wzorców (44)
- Rozpoczynanie pracy od pełnego projektu (45)
4. Zapachy kodu (47)
- Duplicated Code (powtórzenia kodu) (48)
- Long Method (długa metoda) (49)
- Conditional Complexity (zÅ‚ożoność warunków) (50)
- Primitive Obsession (pierwotna obsesja) (50)
- Indecent Exposure (nieprzyzwoite obnażanie się) (51)
- Solution Sprawl (rozrzucanie rozwiÄ…zania) (51)
- Alternative Class with Different Interfaces (podobna klasa o innych interfejsach) (51)
- Lazy Class (leniwa klasa) (52)
- Large Class (duża klasa) (52)
- Switch Statements (instrukcje switch) (52)
- Combinatorial Explosion (eksplozja kombinatoryczna) (52)
- Oddball Solution (osobliwe rozwiÄ…zanie) (53)
5. Katalog refaktoryzacji ukierunkowanych na wzorce (55)
- Format opisu przekształceń (55)
- Przykłady (56)
- Obsługa XML (57)
- HTML Parser (57)
- Kalkulator ryzyka kredytu (58)
- Punkt wyjścia (58)
- Jak wykorzystać tę książkę do nauki (58)
6. Tworzenie obiektów (61)
- Replace Constructors with Creation Methods (zastÄ…p konstruktory metodami tworzÄ…cymi egzemplarze) (62)
- Motywacja (62)
- Mechanika (64)
- Przykład (64)
- Odmiany (69)
- Move Creation Knowledge to Factory (przenieÅ› operacjÄ™ tworzenia obiektów do fabryki) (71)
- Motywacja (73)
- Mechanika (75)
- Przykład (75)
- Encapsulate Classes with Factory (zahermetyzuj klasy, wprowadzajÄ…c fabrykÄ™) (81)
- Motywacja (82)
- Mechanika (82)
- Przykład (83)
- Odmiany (86)
- Introduce Polymorphic Creation with Factory Method (wprowadź polimorficzne tworzenie obiektów - wzorzec Factory Method) (88)
- Motywacja (89)
- Mechanika (90)
- Przykład (91)
- Encapsulate Composite with Builder (użyj klasy Builder do hermetyzacji obiektów Composite) (95)
- Mechanika (97)
- Przykład (98)
- Odmiany (108)
- Inline Singleton (wstaw kod klasy Singleton w miejscu wywołania) (111)
- Motywacja (111)
- Mechanika (114)
- Przykład (114)
7. Upraszczanie kodu (117)
- Compose Method (zbuduj metodÄ™ z kilku elementów) (118)
- Motywacja (118)
- Mechanika (120)
- Przykład (120)
- Replace Conditional Logic with Strategy (zastąp wyrażenia warunkowe wzorcem Strategy) (123)
- Motywacja (123)
- Mechanika (125)
- Przykład (126)
- Move Embellishment to Decorator (przenieś upiększenia do klasy Decorator) (136)
- Motywacja (136)
- Mechanika (139)
- Przykład (140)
- Replace State-Altering Conditionals with State (zastąp wyrażenia warunkowe zmiany stanu klasami State) (154)
- Motywacja (155)
- Mechanika (156)
- Przykład (156)
- Replace Implicit Tree with Composite (zastÄ…p niejawne drzewo strukturÄ… Composite) (165)
- Motywacja (165)
- Mechanika (168)
- Przykład (169)
- Replace Conditional Dispatcher with Command (zastÄ…p dyspozycje oparte na warunkach obiektami Command) (177)
- Motywacja (177)
- Mechanika (179)
- Przykład (180)
8. Uogólnianie kodu (187)
- Form Template Method (utwórz metodÄ™ szablonowÄ…) (188)
- Motywacja (189)
- Mechanika (190)
- Przykład (190)
- Extract Composite (wyodrębnij kompozyt) (195)
- Motywacja (195)
- Mechanika (196)
- Przykład (197)
- Replace One/Many Distinctions with Composite (zastÄ…p zróżnicowanie jeden-wiele wzorcem Composite) (203)
- Motywacja (203)
- Mechanika (205)
- Przykład (206)
- Replace Hard-Coded Notifications with Observer (zastÄ…p powiadomienia zapisane w kodzie wzorcem Observer) (214)
- Motywacja (214)
- Mechanika (216)
- Przykład (217)
- Unify Interfaces with Adapter (zunifikuj interfejsy, wprowadzajÄ…c adapter) (223)
- Motywacja (224)
- Mechanika (224)
- Przykład (226)
- Extract Adapter (wyodrębnij adapter) (233)
- Motywacja (234)
- Mechanika (235)
- Przykład (236)
- Odmiany (242)
- Replace Implicit Language with Interpreter (zastąp niejawny język interpreterem) (243)
- Motywacja (244)
- Mechanika (245)
- Przykład (246)
9. Ochrona (257)
- Replace Type Code with Class (zastÄ…p kod typu klasÄ…) (258)
- Motywacja (258)
- Mechanika (260)
- Przykład (261)
- Limit Instantiation with Singleton (ogranicz tworzenie egzemplarzy, stosujÄ…c singleton) (267)
- Motywacja (267)
- Mechanika (268)
- Przykład (269)
- Introduce Null Object (wprowadź obiekt pusty) (271)
- Motywacja (271)
- Mechanika (273)
- Przykład (274)
10. Akumulacja (279)
- Move Accumulation to Collecting Parameter (przenieÅ› operacje gromadzenia danych do parametru zbierajÄ…cego) (280)
- Motywacja (280)
- Mechanika (281)
- Przykład (282)
- Move Accumulation to Visitor (przenieÅ› operacje gromadzenia danych do inspektora) (286)
- Motywacja (287)
- Mechanika (290)
- Przykład (294)
11. Narzędzia (301)
- Chain Constructors (połącz konstruktory w łańcuch) (302)
- Motywacja (303)
- Mechanika (303)
- Przykład (303)
- Unify Interfaces (zunifikuj interfejsy) (305)
- Motywacja (305)
- Mechanika (306)
- Przykład (306)
- Extract Parameter (wyodrębnij parametr) (307)
- Motywacja (307)
- Mechanika (308)
- Przykład (308)
Posłowie (311)
Bibliografia (313)
Skorowidz (315)