Adaptywny kod. Zwinne programowanie, wzorce projektowe i SOLID-ne zasady. Wydanie II (ebook)(audiobook)(audiobook)
- Autor:
- Gary McLean Hall
- Promocja Przejdź
- Wydawnictwo:
- Helion
- Wydawnictwo:
- Helion
- Ocena:
- 6.0/6 Opinie: 2
- Stron:
- 400
- Druk:
- oprawa miękka
- 3w1 w pakiecie:
-
PDFePubMobi
Opis książki
Czytaj fragment
Tworzenie oprogramowania nie może być procesem powolnym. Dziś zespoły projektowe muszą cechować się elastycznością i dynamiką działania, aby odnieść sukces. Wymagania stawiane kodowi mogą wielokrotnie się zmieniać podczas projektu. Oznacza to, że wprowadzanie zmian do kodu powinno być proste i możliwie mało pracochłonne. Deweloperzy, którzy wdrożą zasady programowania zwinnego i będą przestrzegać związanych z nimi dobrych praktyk, będą w stanie sprostać tym wymaganiom.
Niniejsza książka jest przeznaczona dla średnio zaawansowanych programistów, którzy dobrze opanowali tworzenie kodu zorientowanego obiektowo i chcą przyswoić sobie najlepsze praktyki programistyczne. Książka stanowi pomost między teorią a praktyką, ułatwiający wdrożenie w codziennej pracy wzorców projektowych, zasad SOLID, testów jednostkowych czy refaktoringu. Wyjaśniono tu stosowanie zawiłych reguł, takich jak „otwarte – zamknięte”, zasad podstawienia Liskova, metod wstrzykiwania zależności czy zwiększania adaptywności kodu za pomocą interfejsów. Przedstawiono również pewne antywzorce projektowe wraz ze wskazówkami, w jaki sposób można ich uniknąć i zapewnić potrzebną funkcjonalność bez utraty elastyczności kodu.
Najważniejsze zagadnienia:
- metodologie Scrum i kanban,
- zależności i warstwy architektury kodu,
- testy i refaktoring,
- odwracanie zależności,
- wiązanie i spójność kodu.
Gary McLean Hall jest programistą i architektem oprogramowania. Jest cenionym konsultantem, który specjalizuje się w dobrych wzorcach i praktykach programistycznych. Pracował w wielu zespołach ukierunkowanych na tworzenie adaptywnego kodu w takich firmach, jak Eidos, Xerox, Nephila Capital czy The LateRooms Group. W swojej pracy zawsze szukał złotego środka pomiędzy tworzeniem funkcjonalnego produktu i wysokiej jakości jego kodu źródłowego. Kod adaptywny: solidny, elastyczny i łatwy w utrzymaniu!
Podobne produkty
-
Czysty kod. Podręcznik dobrego programisty Czysty kod. Podręcznik dobrego programisty
Robert C. Martin
-
Vue.js 2. Wprowadzenie dla profesjonalistów Vue.js 2. Wprowadzenie dla profesjonalistów
Adam Freeman
-
Mistrz czystego kodu. Kodeks postępowania profe... Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów
Robert C. Martin
-
Algorytmy Data Science. Siedmiodniowy przewodni... Algorytmy Data Science. Siedmiodniowy przewodnik. Wydanie II
David Natingga
-
Czysta architektura. Struktura i design oprogra... Czysta architektura. Struktura i design oprogramowania. Przewodnik dla profesjonalistów
Robert C. Martin
-
Programowanie w języku Kotlin. The Big Nerd Ran... Programowanie w języku Kotlin. The Big Nerd Ranch Guide
Josh Skeen, David Greenhalgh
Podobne produkty
-
C++. Podróż po języku dla zaawansowanych. Wydan... C++. Podróż po języku dla zaawansowanych. Wydanie II
Bjarne Stroustrup
-
Wielkie umysły programowania. Jak myślą i pracu... Wielkie umysły programowania. Jak myślą i pracują twórcy najważniejszych języków
Federico Biancuzzi, Shane Warden
-
Mistrz czystego kodu. Kodeks postępowania profe... Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów
Robert C. Martin
-
Czysty kod. Podręcznik dobrego programisty Czysty kod. Podręcznik dobrego programisty
Robert C. Martin
-
Algorytmy Data Science. Siedmiodniowy przewodni... Algorytmy Data Science. Siedmiodniowy przewodnik. Wydanie II
David Natingga
-
Osaczeni przez liczby. O algorytmach, które kon... Osaczeni przez liczby. O algorytmach, które kontrolują nasze życie. Od Facebooka i Google'a po fake newsy i bańki filtrujące
David Sumpter
Recenzje (1)
-
Programista Magazyn RAFAŁ KOCISZ
Pytanie: co stanowi wspólną cechę wszystkich nowoczesnych technik wytwarzania oprogramowania? Pierwsze, co mi przychodzi do głowy, to elastyczność w reagowaniu na zmiany i zwinność w dopasowywaniu się do nich. W skrócie: bycie adaptywnym. Być może właśnie to słowo-klucz skłoniło mnie do zainteresowania się książką Adaptywny kod. Zwinne programowanie, wzorce projektowe i SOLID-ne zasady. Wydanie II, którą to pozycję chciałbym zaproponować dziś czytelnikom Klubu Dobrej Książki. Adaptywny kod to książka, która bardzo duży nacisk kładzie na praktykę. Celem autora jest szybkie wprowadzenie początkującego adepta programistycznego rzemiosła w świat nowoczesnych, pragmatycznych rozwiązań stosowanych w rzeczywistych projektach. Rozwiązań, które łączy wspólny mianownik: płynność i elastyczność w stosunku do nieustannie zmieniającej się rzeczywistości, w opozycji do wprowadzania sztywnych reguł, kaskadowych procesów czy też zaszywania silnych zależności w kodzie źródłowym oprogramowania. W tym ujęciu słowo "adaptywny" w tytule książki wydaje być się jak najbardziej na miejscu. Patrząc na strukturę książki, widać od razu, jaki to zestaw rozwiązań utożsamiany jest przez autora z nowoczesnym podejściem do procesu wytwarzania oprogramowania. Na pierwszy ogień idą zwinne metodyki zarządzania projektami. W dwóch pierwszych rozdziałach książki przedstawiono najbardziej popularne rozwiązania: Serum i Kanban. Ich opis jest dość pobieżny, ale za to bardzo konkretny i omówiony z punktu widzenia programisty. W kolejnych czterech rozdziałach autor przekierowuje tematykę w obszary związanie z projektowaniem architektury oprogramowania, omawiając takie zagadnienia jak zależności, warstwy, interfejsy, wzorce projektowe, testowanie (na poziomie kodu) oraz refaktoryzację. Czytelnik otrzymuje tu kompaktowy, a zarazem bardzo kompletny przegląd technik projektowania oprogramowania, których konsekwentne stosowanie prowadzi do powstawania kodu odpornego na zmiany, czyli inaczej mówiąc: adaptywnego. Następne pięć rozdziałów poświęconych jest zasadom SOLID, na które składają się: zasada pojedynczej odpowiedzialności, zasada "otwarty/zamknięty", zasada podstawienia Liskov, zasada segregacji interfejsów, zasada odwracania zależności. Każdy rozdział, w którym omówiono poszczególną zasadę, zaczyna się od prezentacji jakiegoś konkretnego problemu projektowego (czytaj: od przedstawienia pewnego problematycznego fragmentu kodu), po czym autor krok po kroku przeprowadza czytelnika przez proces naprawy, prowadzący do rozwiązania bardziej czytelnego i elastycznego, spełniającego warunki omawianej zasady. W ostatnich dwóch rozdziałach skupiono się na omówieniu mechanizmu wstrzykiwania zależności oraz pojęć sprzężenia, spójności i współzależności. Książka zawiera też jeden dodatek, w którym omówiono adaptywne narzędzia wspomagające pracę programisty: mechanizm kontroli wersji kodu źródłowego Git oraz koncepcję systemu ciągłej integracji. Patrząc na całość opracowania, wydaje się, iż autor postawił sobie za cel przekonanie czytelnika, że adaptywność w procesie wytwarzania oprogramowania powinna przenikać wszystkie jego warstwy: poczynając od doboru narzędzi i niskopoziomowych technik kodowania, poprzez projektowanie architektury, kończąc na metodologii zarządzania projektem. Sądzę, że lektura tej książki będzie niezwykle cenna, przede wszystkim dla świeżo upieczonych programistów, ale również na tych, którzy zjedli zęby na niejednym projekcie. Polecam!
Szczegóły książki
- Tytuł oryginału:
- Adaptive Code: Agile coding with design patterns and SOLID principles (2nd Edition) (Developer Best Practices)
- Tłumaczenie:
- Jakub Hubisz, Andrzej Watrak
- ISBN Książki drukowanej:
- 978-83-283-3870-8, 9788328338708
- Data wydania książki drukowanej:
- 2017-12-08
- ISBN Ebooka:
- 978-83-283-3871-5, 9788328338715
- Data wydania ebooka:
-
2017-12-08
Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@helion.pl.
- Format:
- 170x230
- Numer z katalogu:
- 66308
- Rozmiar pliku Pdf:
- 4.9MB
- Rozmiar pliku ePub:
- 7.1MB
- Rozmiar pliku Mobi:
- 7.1MB
- Pobierz przykładowy rozdział PDF
- Przykłady na ftp
Ebook zawiera materiały dodatkowe, które możesz pobrać z serwera FTP - link znajdziesz na stronie redakcyjnej.
Spis treści
- Scrum kontra model kaskadowy (24)
- Role i obowiązki (26)
- Właściciel produktu (26)
- Scrum master (27)
- Zespół deweloperski (28)
- Artefakty (29)
- Tablica Scruma (29)
- Wykresy i wskaźniki (41)
- Rejestry (45)
- Sprint (47)
- Planowanie wydania (47)
- Planowanie sprintu (48)
- Codzienne spotkania Scruma (50)
- Demo sprintu (51)
- Retrospektywa sprintu (52)
- Kalendarz Scruma (54)
- Zwinność w prawdziwym świecie (55)
- Sztywność (55)
- Brak testowalności (56)
- Wskaźniki (57)
- Podsumowanie (59)
- Kanban - szybki początek (62)
- Radiator informacyjny (62)
- Ograniczanie pracy w trakcie (66)
- Ochrona przed zmianą (66)
- Definiowanie "ukończenia" (67)
- Ceremonie sterowane zdarzeniami (68)
- Klasy usług (69)
- Umowy o gwarantowanym poziomie świadczenia usług (69)
- Limity WIP dla klas usług (71)
- Ludzie jako klasy usług (71)
- Analiza (72)
- Czas dostarczenia i czas cyklu (72)
- Kumulatywne diagramy przepływu (73)
- Podsumowanie (81)
- Zależności (86)
- Prosty przykład (87)
- Zależności platformowe (90)
- Zależności zewnętrzne (92)
- Modelowanie zależności za pomocą grafu skierowanego (93)
- Zarządzanie zależnościami (97)
- Implementacje i interfejsy (97)
- Zapach instrukcji new (98)
- Alternatywne sposoby tworzenia obiektów (101)
- Rozwiązywanie zależności (103)
- Zarządzanie zależnościami za pomocą projektów NuGet (112)
- Warstwy (117)
- Popularne wzorce warstwowania (118)
- Zagadnienia przecinające (123)
- Warstwowanie asymetryczne (124)
- Podsumowanie (126)
- Czym jest interfejs? (127)
- Składnia (128)
- Jawna implementacja (130)
- Polimorfizm (134)
- Wzorce tworzenia adaptywnego kodu (135)
- Wzorzec Zerowy Obiekt (135)
- Wzorzec Adapter (140)
- Wzorzec Strategia (143)
- Dodatkowe funkcjonalności (145)
- Kacze typowanie (145)
- Domieszki (149)
- Płynne interfejsy (153)
- Podsumowanie (155)
- Testy jednostkowe (158)
- Przygotuj, wykonaj, zweryfikuj (158)
- Programowanie sterowane testami (162)
- Bardziej zaawansowane testy (166)
- Wzorce testów jednostkowych (180)
- Tworzenie elastycznych testów (180)
- Wzorzec Budowniczy testów jednostkowych (182)
- Wzorzec Budowniczy (182)
- Uwidacznianie przeznaczenia testu jednostkowego (183)
- Przede wszystkim testy (185)
- Co to jest TDD? (185)
- Wzorzec TDD (186)
- Wzorzec TFD (187)
- Inne testy (187)
- Piramida testów (188)
- Przeciwieństwa piramidy testów (189)
- Diagram testowy (190)
- Testy profilaktyczne i lecznicze (192)
- Jak zmniejszyć wskaźnik MTTR? (193)
- Podsumowanie (194)
- Wprowadzenie do refaktoryzacji (195)
- Zmiana istniejącego kodu (196)
- Nowy typ konta (204)
- Agresywna refaktoryzacja (208)
- Czerwone - zielone - refaktoryzacja... Przeprojektowanie (209)
- Adaptacja zastanego kodu (209)
- Technika złotego wzorca (210)
- Podsumowanie (216)
- Opis problemu (219)
- Refaktoryzacja poprawiająca czytelność kodu (222)
- Refaktoryzacja zwiększająca abstrakcyjność kodu (226)
- Zasada pojedynczej odpowiedzialności i wzorzec Dekorator (233)
- Wzorzec Kompozyt (234)
- Dekoratory predykatu (237)
- Dekoratory warunkowe (240)
- Leniwe dekoratory (241)
- Dekoratory logujące (242)
- Dekoratory profilujące (243)
- Dekorowanie właściwości i zdarzeń (246)
- Podsumowanie (247)
- Wprowadzenie do zasady "otwarty/zamknięty" (249)
- Definicja Meyera (249)
- Definicja Martina (250)
- Usuwanie błędów (250)
- "Świadomość" kodu klienckiego (251)
- Punkty rozszerzeń (251)
- Kod bez punktów rozszerzeń (251)
- Metody wirtualne (252)
- Metody abstrakcyjne (253)
- Dziedziczenie interfejsu (254)
- "Projektuj pod kątem dziedziczenia albo blokuj dziedziczenie" (254)
- Chroniona zmienność (255)
- Przewidywana zmienność (255)
- Stabilny interfejs (255)
- Właściwa adaptywność (256)
- Przewidywana zmienność a spekulatywne uogólnienie (256)
- Potrzebujesz aż tylu interfejsów? (257)
- Podsumowanie (258)
- Wprowadzenie do zasady podstawienia Liskov (259)
- Oficjalna definicja zasady LSP (259)
- Reguły tworzące zasadę LSP (260)
- Kontrakty (261)
- Warunki początkowe (262)
- Warunki końcowe (263)
- Inwarianty (264)
- Reguły kontraktowe w zasadzie LSP (266)
- Kontrakty kodu (272)
- Kowariancja i kontrawariancja (278)
- Definicje (278)
- Reguły systemu typów w zasadzie LSP (284)
- Podsumowanie (287)
- Przykład segregacji interfejsów (289)
- Prosty interfejs CRUD (290)
- Zapamiętywanie danych (295)
- Dekorowanie wielu interfejsów (298)
- Tworzenie kodu klienckiego (300)
- Wiele implementacji, wiele instancji (301)
- Jedna implementacja, jedna instancja (303)
- Antywzorzec "interfejsowa mieszanka" (304)
- Dzielenie interfejsów (304)
- Wymagania kodu klienckiego (304)
- Wymagania architektury aplikacji (310)
- Interfejsy z pojedynczymi metodami (314)
- Podsumowanie (315)
- Planowanie zależności (317)
- Antywzorzec Świta (318)
- Wzorzec Schody (320)
- Przykład abstrakcyjnego projektu (321)
- Abstrakcje (322)
- Konkretne polecenia (322)
- Wyodrębnianie funkcjonalności (325)
- Ulepszony kod kliencki (329)
- Abstrakcje obsługujące zapytania (332)
- Dalsze abstrakcje (333)
- Podsumowanie (334)
- Skromne początki (337)
- Aplikacja Lista zadań (340)
- Tworzenie grafu obiektów (342)
- Nie tylko proste wstrzykiwanie (358)
- Antywzorzec Lokalizator Usług (358)
- Wzorzec Nielegalne Wstrzykiwanie (361)
- Korzeń kompozycji (363)
- Konwencje zamiast konfiguracji (368)
- Podsumowanie (371)
- Sprzężenie i spójność kodu (373)
- Sprzężenie (373)
- Spójność (374)
- Współzależność (375)
- Nazwa (376)
- Typ (377)
- Znaczenie (377)
- Algorytm (378)
- Pozycja (379)
- Kolejność wykonania (379)
- Czas (379)
- Wartość (379)
- Tożsamość (380)
- Określanie stopnia współzależności (380)
- Lokalność (380)
- Nieoficjalna współzależność (380)
- Współzależność statyczna i dynamiczna (381)
- Podsumowanie (381)
- Kontrola kodu źródłowego w systemie Git (385)
- Tworzenie kopii repozytorium (387)
- Przełączenie na inną gałąź (388)
- Ciągła integracja (388)
Wprowadzenie (11)
CZĘŚĆ I. FRAMEWORKI ZWINNE
Rozdział 1. Wprowadzenie do metodologii Scrum (21)
Rozdział 2. Wprowadzenie do metodologii kanban (61)
CZĘŚĆ II. PODSTAWY TWORZENIA ADAPTYWNEGO KODU
Rozdział 3. Zależności i warstwy (85)
Rozdział 4. Interfejsy i wzorce projektowe (127)
Rozdział 5. Testy (157)
Rozdział 6. Refaktoryzacja (195)
CZĘŚĆ III. SOLID-NY KOD
Rozdział 7. Zasada pojedynczej odpowiedzialności (219)
Rozdział 8. Zasada "otwarty/zamknięty" (249)
Rozdział 9. Zasada podstawienia Liskov (259)
Rozdział 10. Segregacja interfejsów (289)
Rozdział 11. Odwracanie zależności (317)
CZĘŚĆ IV. STOSOWANIE ADAPTYWNYCH TECHNIK
Rozdział 12. Wstrzykiwanie zależności (337)
Rozdział 13. Sprzężenie, spójność, współzależność (373)
DODATKI
Dodatek. Adaptywne narzędzia (385)
Skorowidz (391)
Oceny i opinie klientów (2)
(2)
(0)
(0)
(0)
(0)
(0)
6 oceniona przez: Tomasz Strzałka, 2018-09-13
6 oceniona przez: Paweł, Java developer 2018-01-29
więcej opinii