Zrównoważony kod. Dobre praktyki i heurystyki dla inżynierów oprogramowania
- Autor:
- Mark Seemann
- Wydawnictwo:
- Helion
- Ocena:
- 5.0/6 Opinie: 1
- Stron:
- 400
- Druk:
- oprawa miękka
- Dostępne formaty:
-
PDFePubMobi
Opis ebooka: Zrównoważony kod. Dobre praktyki i heurystyki dla inżynierów oprogramowania
Wielu zdolnych programistów uczestniczy w nieefektywnych, źle prowadzonych projektach. Inni muszą utrzymywać kod, który właściwie nigdy nie powinien ujrzeć światła dziennego. Źródeł tego rodzaju trudności jest wiele: programowanie samo w sobie jest niełatwym zagadnieniem, a tworzenie funkcjonalnych aplikacji najczęściej wymaga współdziałania wielu osób. Sprawia to, że kod budujący aplikację szybko zwiększa swoją złożoność, staje się niezrozumiały i bardzo trudny w utrzymaniu. Na szczęście te problemy zostały dostrzeżone i obecnie mamy wiele sposobów ich rozwiązywania.
Ta książka jest przeznaczona dla doświadczonych programistów, którzy chcą zdobyć lub pogłębić wiedzę o metodologiach i dobrych praktykach tworzenia złożonego oprogramowania. Stanowi interesująco napisany zbiór heurystyk i technik ułożonych w kolejności stosowania podczas rozwijania projektu programistycznego. Omówiono tu między innymi listy kontrolne, TDD, rozdzielenie poleceń i zapytań, Git, złożoność cyklomatyczną, przezroczystość referencyjną, wycinki pionowe, refaktoryzację zastanego kodu czy programowanie typu outside-in. Pokazano również, jak utrzymać właściwe tempo pracy podczas dodawania funkcjonalności, jak rozwiązywać problemy optymalizacji, enkapsulacji, a także projektowania API i testów jednostkowych. Poszczególne zagadnienia zostały zilustrowane kodem przykładowego projektu napisanego w C#, zrozumiałego dla każdego, kto zna dowolny język zorientowany obiektowo.
Dzięki książce zrozumiesz, jak:
- wybierać sprawdzone procesy
- tworzyć listy kontrolne ułatwiające polepszenie wyników
- unikać "paraliżu analitycznego"
- przeciwdziałać degradacji kodu i niepotrzebnej złożoności
- stosować lepsze techniki modyfikacji kodu i rozwiązywania problemów
- skuteczniej godzić wymogi wydajności i bezpieczeństwa
Celem nie jest pisanie kodu. Celem jest funkcjonalne oprogramowanie!
Kod, który mieści się w Twojej głowie zawiera niezbędne, praktyczne rady dotyczące pisania kodu w zrównoważony sposób, a także panowania nad złożonością projektów, która zwykle wymyka się spod kontroli.
Mark Seemann czerpie z dekad swojego doświadczenia w pomaganiu zespołom w osiągnięciu sukcesu i prowadzi czytelnika od zera (braku kodu) do wdrożonych funkcjonalności. Pokazuje jak utrzymać właściwe tempo pracy podczas dodawania funkcjonalności, zajmowania się kwestiami przekrojowymi, rozwiązywania problemów i optymalizacji. W tej książce znajdziesz cenne pomysły, praktyki i procesy dotyczące kluczowych zagadnień, począwszy od tworzenia list kontrolnych po pracę zespołową, od enkapsulacji po dekompozycję, od projektowania API po testy jednostkowe.
Seemann ilustruje swoje spostrzeżenia kodem pochodzącym z gotowego przykładowego projektu. Napisał go w języku C# i zaprojektował w taki sposób, aby mógł go zrozumieć każdy, kto zna dowolny język zorientowany obiektowo, np. Javę, C++ i TypeScript. Aby lepiej przeanalizować projekt, można pobrać cały kod wraz z wyczerpującymi opisami rewizji.
- Wybieraj sprawdzone sposoby myślenia i procesy, a także unikaj złych, nietrafionych metafor
- Używaj list kontrolnych, aby zyskać wolność i polepszyć wyniki wykorzystując posiadane umiejętności
- Unikaj "paraliżu analitycznego", tworząc i wdrażając pionowy wycinek aplikacji
- Przeciwdziałaj zjawiskom, które prowadzą do degradacji kodu i niepotrzebnej złożoności
- Opanuj lepsze techniki służące do zmiany zachowania kodu
- Odkryj sposoby szybszego i skuteczniejszego rozwiązywania problemów w kodzie
- Myśl skuteczniej o wydajności i bezpieczeństwie
Jeśli kiedykolwiek doświadczyłeś niedogodności związanych z uczestnictwem w kiepskim projekcie lub z pracą z zastanym kodem, zapewniamy, że dzięki tej książce już zawsze poradzisz sobie znacznie lepiej.
Mark Seemann jest kiepskim ekonomistą, który odnalazł swoje powołanie jako programista i od końca lat 90-tych XX w. pracuje jako programista aplikacji internetowych i biznesowych. Kiedyś marzył o karierze gwiazdy rocka, ale ze względu na brak talentu i aparycji został certyfikowanym programistą Rockstara. Napisał książkę Wstrzykiwanie zależności, która zdobyła nagrodę Jolt Award. Wystąpił na ponad 100 międzynarodowych konferencjach i nagrywał kursy wideo dla serwisów Pluralsight i Clean Coders.
"Mark Seemann słynie z jasnego i wyczerpującego objaśniania złożonych koncepcji. W swojej książce zebrał swoje bogate doświadczenie z dziedziny rozwijania oprogramowania w zbiór praktycznych technik, które można wykorzystać do napisania zrównoważonego i zrozumiałego przez ludzi kodu. Ta książka będzie obowiązkową pozycją dla każdego programisty".Scott Wlaschin, autor książki Domain Modeling Made Functional
Wybrane bestsellery
-
Wstrzykiwanie zależności. Zasady, praktyki, wzorce to poprawiona i rozszerzona wersja bestselleru Dependency Injection in .NET. Publikacja w sposób kompleksowy omawia zagadnienie wstrzykiwania zależności (DI). Zawiera przykłady, wzorce i antywzorce, które czytelnik może wykorzystać do tworzenia l...(86.43 zł najniższa cena z 30 dni)
103.20 zł
129.00 zł(-20%) -
Czym jest inżynieria wymagań? To systematyczne podejście do pozyskiwania i dokumentowania wymagań, a także zarządzania nimi. Polega na zrozumieniu potrzeb i oczekiwań interesariuszy, a następnie opisaniu, za pomocą wymagań, systemu, który je spełnia.
Certyfikowany inżynier wymagań. Na podstawie IREB CPRE. Poziom podstawowy Certyfikowany inżynier wymagań. Na podstawie IREB CPRE. Poziom podstawowy
(41.40 zł najniższa cena z 30 dni)48.30 zł
69.00 zł(-30%) -
To drugie, zaktualizowane wydanie przewodnika po systemie Prometheus. Znajdziesz w nim wyczerpujące wprowadzenie do tego oprogramowania, a także wskazówki dotyczące monitorowania aplikacji i infrastruktury, tworzenia wykresów, przekazywania ostrzeżeń, bezpośredniej instrumentacji kodu i pobierani...
Prometheus w pełnej gotowości. Jak monitorować pracę infrastruktury i wydajność działania aplikacji. Wydanie II Prometheus w pełnej gotowości. Jak monitorować pracę infrastruktury i wydajność działania aplikacji. Wydanie II
(53.40 zł najniższa cena z 30 dni)62.30 zł
89.00 zł(-30%) -
Power Apps to platforma stworzona przez Microsoft, umożliwiająca łatwe projektowanie, tworzenie i dostosowywanie aplikacji bez konieczności posiadania głębokiej wiedzy programistycznej. Z użyciem Power Apps można budować niestandardowe aplikacje, które efektywnie wspierają i automatyzują różne pr...
Power Apps. Kurs video. Tworzenie biznesowych aplikacji no-code Power Apps. Kurs video. Tworzenie biznesowych aplikacji no-code
(39.90 zł najniższa cena z 30 dni)89.54 zł
199.00 zł(-55%) -
Ta książka będzie świetnym uzupełnieniem wiedzy o Flutterze i Darcie, sprawdzi się również jako wsparcie podczas rozwiązywania konkretnych problemów. Znalazło się tu ponad sto receptur, dzięki którym poznasz tajniki pisania efektywnego kodu, korzystania z narzędzi udostępnianych przez framework F...
Flutter i Dart. Receptury. Tworzenie chmurowych aplikacji full stack Flutter i Dart. Receptury. Tworzenie chmurowych aplikacji full stack
(41.40 zł najniższa cena z 30 dni)48.30 zł
69.00 zł(-30%) -
Sterownik PLC (ang. programmable logic controller) to jedno z najważniejszych urządzeń stosowanych w automatyce przemysłowej. Zawiera układ mikroprocesorowy pozwalający sterować pracą maszyn, linii produkcyjnych, oświetlenia i innych urządzeń elektrycznych w przemyśle, ale nie tylko. Tego typu st...
Języki programowania sterowników PLC: LAD, FBD, SCL, STL. Ćwiczenia dla początkujących Języki programowania sterowników PLC: LAD, FBD, SCL, STL. Ćwiczenia dla początkujących
(26.94 zł najniższa cena z 30 dni)31.43 zł
44.90 zł(-30%) -
Czy chcesz szybko i skutecznie opanować podstawy Microsoft Azure, zrozumieć jego architekturę i możliwości? W takim razie to książka dla Ciebie! Czy chcesz nauczyć się, jak wdrażać, zarządzać i skalować aplikacje w chmurze Azure, nie tracąc przy tym cennego czasu? W takim razie to książka dla C...
Azure w 1 dzień. Microsoft Azure od podstaw po zaawansowane techniki Azure w 1 dzień. Microsoft Azure od podstaw po zaawansowane techniki
-
Oto drugie, zaktualizowane i uzupełnione wydanie przewodnika po bibliotece Pandas. Dzięki tej przystępnej książce nauczysz się w pełni korzystać z możliwości oferowanych przez bibliotekę, nawet jeśli dopiero zaczynasz przygodę z analizą danych w Pythonie. Naukę rozpoczniesz z użyciem rzeczywisteg...
Jak analizować dane z biblioteką Pandas. Praktyczne wprowadzenie. Wydanie II Jak analizować dane z biblioteką Pandas. Praktyczne wprowadzenie. Wydanie II
(65.40 zł najniższa cena z 30 dni)76.30 zł
109.00 zł(-30%) -
Wraz z rozwojem sztucznej inteligencji i modeli językowych – a niewątpliwie żyjemy w czasach eksplozji AI – rośnie znaczenie osób będących w stanie w praktyce sięgać po zasoby, jakie oferuje nam ta nowoczesna technologia. Okazuje się, że pośród rozmaitych innych umiejętności potrafi o...
Prompt engineering. Kurs video. Precyzyjne tworzenie zapytań dla modeli AI Prompt engineering. Kurs video. Precyzyjne tworzenie zapytań dla modeli AI
(39.90 zł najniższa cena z 30 dni)92.95 zł
169.00 zł(-45%) -
Zanurz się w fascynujący świat programowania w języku Python i osiągnij imponujący poziom umiejętności w zaledwie 24 godziny! Oto kilka zalet, które sprawiają, że ta książka jest niezbędna dla każdego aspirującego programisty: Szybki start: podstawy Pythona już w pierwszych godzinach nauki ...
Python w 1 dzień. Nauka programowania w Pythonie w 24 godziny od A do Z Python w 1 dzień. Nauka programowania w Pythonie w 24 godziny od A do Z
O autorze ebooka
Mark Seemann marzył o karierze gwiazdy rocka i próbował zostać ekonomistą, jego prawdziwym powołaniem jednak okazało się programowanie aplikacji internetowych i biznesowych. Jest certyfikowanym programistą Rockstara, autorem nagradzanych książek o programowaniu i prelegentem na prestiżowych konferencjach. Mieszka w Kopenhadze z żoną i dwójką dzieci.
Ebooka "Zrównoważony kod. Dobre praktyki i heurystyki dla inżynierów oprogramowania" przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka "Zrównoważony kod. Dobre praktyki i heurystyki dla inżynierów oprogramowania" posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video "Zrównoważony kod. Dobre praktyki i heurystyki dla inżynierów oprogramowania" zobaczysz:
-
w aplikacjach Ebookpoint i Videopoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych z dostępem do najnowszej wersji Twojej przeglądarki internetowej
Szczegóły ebooka
- Tytuł oryginału:
- Code That Fits in Your Head: Heuristics for Software Engineering (Robert C. Martin Series)
- Tłumaczenie:
- Joanna Zatorska
- ISBN Książki drukowanej:
- 978-83-283-9226-7, 9788328392267
- Data wydania książki drukowanej:
- 2022-09-27
- ISBN Ebooka:
- 978-83-283-9227-4, 9788328392274
- Data wydania ebooka:
- 2022-09-27 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@ebookpoint.pl.
- Format:
- 165x228
- Numer z katalogu:
- 175824
- Rozmiar pliku Pdf:
- 7.3MB
- Rozmiar pliku ePub:
- 6.7MB
- Rozmiar pliku Mobi:
- 14.8MB
- 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 ebooka
- 1.1. Budowanie domu
- 1.1.1. Problem związany z projektami
- 1.1.2. Problem etapów
- 1.1.3. Zależności
- 1.2. Pielęgnacja ogrodu
- 1.2.1. Dzięki czemu ogród rośnie?
- 1.3. W kierunku inżynierii
- 1.3.1. Oprogramowanie jako rzemiosło
- 1.3.2. Heurystyki
- 1.3.3. Wcześniejsze poglądy na inżynierię oprogramowania
- 1.3.4. Ku inżynierii oprogramowania
- 1.4. Wniosek
- 2.1. Pomaganie pamięci
- 2.2. Lista kontrolna dla nowego kodu źródłowego
- 2.2.1. Użyj Gita
- 2.2.2. Zautomatyzuj proces budowania
- 2.2.3. Włącz wszystkie komunikaty o błędzie
- 2.3. Włączanie narzędzi kontrolnych dla istniejącego kodu
- 2.3.1. Stopniowe ulepszenia
- 2.3.2. Zhakuj swoją organizację
- 2.4. Wniosek
- 3.1. Cel
- 3.1.1. Zrównoważony rozwój
- 3.1.2. Wartość
- 3.2. Dlaczego programowanie jest trudne
- 3.2.1. Metafora mózgu
- 3.2.2. Więcej kodu się czyta, niż pisze
- 3.2.3. Czytelność
- 3.2.4. Praca intelektualna
- 3.3. W stronę inżynierii oprogramowania
- 3.3.1. Relacja z informatyką
- 3.3.2. Ludzki kod
- 3.4. Wniosek
- 4.1. Zacznij od działającego oprogramowania
- 4.1.1. Od otrzymania danych po ich utrwalenie
- 4.1.2. Minimalny wycinek pionowy
- 4.2. Chodzący szkielet
- 4.2.1. Test charakteryzacyjny
- 4.2.2. Zasada Arrange-Act-Assert
- 4.2.3. Moderowanie analizy statycznej
- 4.3. Podejście outside-in
- 4.3.1. Przyjmowanie danych w formacie JSON
- 4.3.2. Przesyłanie rezerwacji
- 4.3.3. Test jednostkowy
- 4.3.4. DTO i model domeny
- 4.3.5. Fałszywy obiekt
- 4.3.6. Interfejs repozytorium
- 4.3.7. Tworzenie w repozytorium
- 4.3.8. Konfiguracja zależności
- 4.4. Kończenie wycinka
- 4.4.1. Schemat
- 4.4.2. Repozytorium SQL
- 4.4.3. Konfiguracja uwzględniająca bazę danych
- 4.4.4. Wykonanie testu dymnego
- 4.4.5. Test graniczny z fałszywą bazą danych
- 4.5. Wniosek
- 5.1. Zapisywanie danych
- 5.1.1. Zasada Transformation Priority Premise
- 5.1.2. Test parametryzowany
- 5.1.3. Kopiowanie obiektu DTO do modelu domeny
- 5.2. Walidacja
- 5.2.1. Błędne daty
- 5.2.2. Procedura czerwone, zielone, refaktoryzacja
- 5.2.3. Liczby naturalne
- 5.2.4. Prawo Postela
- 5.3. Ochrona niezmienników
- 5.3.1. Zawsze poprawny
- 5.4. Wniosek
- 6.1. Pamięć krótkoterminowa kontra długoterminowa
- 6.1.1. Zastany kod i pamięć
- 6.2. Wydajność
- 6.2.1. Zbyt wiele rezerwacji
- 6.2.2. Adwokat diabła
- 6.2.3. Istniejące rezerwacje
- 6.2.4. Adwokat diabła kontra czerwone, zielone, refaktoryzacja
- 6.2.5. Kiedy jest wystarczająco wiele testów?
- 6.3. Wniosek
- 7.1. Psucie się kodu
- 7.1.1. Wartości progowe
- 7.1.2. Złożoność cyklomatyczna
- 7.1.3. Reguła 80/24
- 7.2. Kod, który mieści się w mózgu
- 7.2.1. Kwiat sześciokątów
- 7.2.2. Spójność
- 7.2.3. Zazdrość o kod
- 7.2.4. Między wierszami
- 7.2.5. Parsuj, nie waliduj
- 7.2.6. Architektura fraktalna
- 7.2.7. Liczba zmiennych
- 7.3. Wniosek
- 8.1. Zasady projektowania API
- 8.1.1. Afordancja
- 8.1.2. Poka-Yoke
- 8.1.3. Pisz dla czytelników
- 8.1.4. Przedkładaj dobrze napisany kod nad komentarze
- 8.1.5. Zastąpienie nazw znakami x
- 8.1.6. Rozdzielenie poleceń i zapytań
- 8.1.7. Hierarchia komunikacji
- 8.2. Przykładowy projekt API
- 8.2.1. Maître D'
- 8.2.2. Interakcja z opakowanym obiektem
- 8.2.3. Szczegóły implementacyjne
- 8.3. Wniosek
- 9.1. Git
- 9.1.1. Komunikaty rewizji
- 9.1.2. Ciągła integracja
- 9.1.3. Małe rewizje
- 9.2. Zbiorowa własność kodu
- 9.2.1. Programowanie w parach
- 9.2.2. Mob Programming
- 9.2.3. Opóźnienia w inspekcji kodu
- 9.2.4. Odrzucenie zmian
- 9.2.5. Recenzje kodu
- 9.2.6. Żądania aktualizacji
- 9.3. Wniosek
- 10.1. Flagi funkcji
- 10.1.1. Flaga kalendarza
- 10.2. Wzorzec dusiciela
- 10.2.1. Dusiciel na poziomie metody
- 10.2.2. Dusiciel na poziomie klasy
- 10.3. Wersjonowanie
- 10.3.1. Wcześniejsze ostrzeżenie
- 10.4. Wniosek
- 11.1. Refaktoryzacja testów jednostkowych
- 11.1.1. Zmiana sieci bezpieczeństwa
- 11.1.2. Dodawanie nowego kodu testowego
- 11.1.3. Osobna refaktoryzacja testów i kodu produkcyjnego
- 11.2. Testy kończące się niepowodzeniem
- 11.3. Wniosek
- 12.1. Zrozumienie
- 12.1.1. Metoda naukowa
- 12.1.2. Upraszczanie
- 12.1.3. Gumowa kaczuszka
- 12.2. Defekty
- 12.2.1. Odtwórz błędy za pomocą testów
- 12.2.2. Wolne testy
- 12.2.3. Defekty niedeterministyczne
- 12.3. Bisekcja
- 12.3.1. Bisekcja za pomocą Gita
- 12.4. Wniosek
- 13.1. Kompozycja
- 13.1.1. Kompozycja zagnieżdżona
- 13.1.2. Kompozycja sekwencyjna
- 13.1.3. Przezroczystość referencyjna
- 13.2. Kwestie przekrojowe
- 13.2.1. Zapisywanie zdarzeń w dziennikach
- 13.2.2. Dekorator
- 13.2.3. Co rejestrować w dziennikach
- 13.3. Wniosek
- 14.1. Osobisty rytm
- 14.1.1. Dzielenie czasu na bloki
- 14.1.2. Rób przerwy
- 14.1.3. Wykorzystuj czas celowo
- 14.1.4. Pisanie bezwzrokowe
- 14.2. Rytm zespołowy
- 14.2.1. Regularne aktualizowanie zależności
- 14.2.2. Zaplanuj inne rzeczy
- 14.2.3. Prawo Conwaya
- 14.3. Wniosek
- 15.1. Wydajność
- 15.1.1. Spuścizna z przeszłości
- 15.1.2. Czytelność
- 15.2. Bezpieczeństwo
- 15.2.1. Metoda STRIDE
- 15.2.2. Spoofing
- 15.2.3. Tampering
- 15.2.4. Repudiation
- 15.2.5. Information Disclosure
- 15.2.6. Denial of service
- 15.2.7. Elevation of privilege
- 15.3. Inne techniki
- 15.3.1. Testowanie oparte na właściwościach
- 15.3.2. Behawioralna analiza kodu
- 15.4. Wniosek
- 16.1. Nawigacja
- 16.1.1. Ogólne spojrzenie
- 16.1.2. Organizacja pliku
- 16.1.3. Znajdowanie szczegółów
- 16.2. Architektura
- 16.2.1. Monolit
- 16.2.2. Cykle
- 16.3. Użycie
- 16.3.1. Uczenie się na podstawie testów
- 16.3.2. Słuchaj swoich testów
- 16.4. Wniosek
- A.1. Adwokat diabła
- A.2. Arrange-act-assert
- A.3. Bisekcja
- A.4. Czerwone, zielone, refaktoryzacja
- A.5. Dekoratory dla aspektów przekrojowych
- A.6. Dusiciel
- A.7. Flaga funkcji
- A.8. Funkcyjny rdzeń, imperatywna powłoka
- A.9. Hierarchia komunikacji
- A.10. Inspekcja kodu
- A.11. Liczenie zmiennych
- A.12. Lista kontrolna dla nowego kodu źródłowego
- A.13. Model zagrożeń
- A.14. Odtwarzaj defekty w testach
- A.15. Parsuj, nie waliduj
- A.16. Prawo Postela
- A.17. Programowanie sterowane X
- A.18. Regularnie aktualizuj zależności
- A.19. Reguła 50/72
- A.20. Reguła 80/24
- A.21. Rozdzielenie poleceń i zapytań
- A.22. Rozdzielenie refaktoryzacji testów i refaktoryzacji kodu produkcyjnego
- A.23. Transformation Priority Premise
- A.24. Usprawiedliwiaj wyjątki od reguły
- A.25. Wersjonowanie semantyczne
- A.26. Wycinek
- A.27. Zastąp nazwy znakami X
- A.28. Złożoność cyklomatyczna
Przedmowa wydawcy serii
Wstęp
O autorze
CZĘŚĆ I. Przyspieszenie
Rozdział 1 Sztuka czy nauka?
Rozdział 2. Listy kontrolne
Rozdział 3. Radzenie sobie ze złożonością
Rozdział 4. Pionowy wycinek
Rozdział 5. Enkapsulacja
Rozdział 6. Triangulacja
Rozdział 7. Dekompozycja
Rozdział 8. Projektowanie API
Rozdział 9. Praca zespołowa
CZĘŚĆ II. Zrównoważony rozwój
Rozdział 10. Rozbudowywanie kodu
Rozdział 11. Edycja testów jednostkowych
Rozdział 12. Rozwiązywanie problemów
Rozdział 13. Separacja pojęć
Rozdział 14. Rytm
Rozdział 15. Typowi podejrzani
Rozdział 16. Wycieczka
Dodatek A. Lista praktyk
Bibliografia
Oceny i opinie klientów: Zrównoważony kod. Dobre praktyki i heurystyki dla inżynierów oprogramowania Mark Seemann (1) Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.
(0)
(1)
(0)
(0)
(0)
(0)