reklama - zainteresowany?

Kod, kt - Helion

Kod, kt
Autor: Mark Seemann
ISBN: 978-83-283-9226-7
okładka: mi
Księgarnia: Helion

Książka będzie dostępna od czerwca 2022

Spis treści

Zrównoważony kod. Dobre praktyki i heurystyki dla inżynierów oprogramowania -- spis treści

Przedmowa wydawcy serii

Wstęp

O autorze

CZĘŚĆ I. Przyspieszenie

Rozdział 1 Sztuka czy nauka?

  • 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

Rozdział 2. Listy kontrolne

  • 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

Rozdział 3. Radzenie sobie ze złożonością

  • 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

Rozdział 4. Pionowy wycinek

  • 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

Rozdział 5. Enkapsulacja

  • 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

Rozdział 6. Triangulacja

  • 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

Rozdział 7. Dekompozycja

  • 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

Rozdział 8. Projektowanie API

  • 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

Rozdział 9. Praca zespołowa

  • 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

CZĘŚĆ II. Zrównoważony rozwój

Rozdział 10. Rozbudowywanie kodu

  • 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

RozdziaÅ‚ 11. Edycja testów jednostkowych

  • 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

RozdziaÅ‚ 12. RozwiÄ…zywanie problemów

  • 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

Rozdział 13. Separacja pojęć

  • 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

Rozdział 14. Rytm

  • 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

Rozdział 15. Typowi podejrzani

  • 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

Rozdział 16. Wycieczka

  • 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

Dodatek A. Lista praktyk

  • 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

Bibliografia

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.