SPIS TREŚCI
O autorach
O recenzentach
Wstęp
CZĘŚĆ 1. Prezentacja czystego kodu
- ROZDZIAŁ 1. Co to takiego czysty kod i dlaczego powinno Ci na nim zależeć?
- O czym będzie ta książka?
- Wyjaśnienie, czym jest czysty kod
- Znaczenie czystego kodu dla zespołów
- Znaczenie czystego kodu we własnych projektach
- Podsumowanie
- ROZDZIAŁ 2. Kto może decydować o tym, jakie są „dobre praktyki”?
- Kto w ogóle decyduje o tych sprawach?
- Najlepsze rozwiązania – skąd tak naprawdę się biorą?
- Zasady wzorców projektowych
- Świadomość sytuacji
- Zachowaj konsekwencję, a szybciej uzyskasz rezultaty
- O narzędziach do analizy kodu
- O testowaniu i jego wielu formach
- Podsumowanie
- ROZDZIAŁ 3. Programuj, nie rób akrobacji
- Czym jest kod?
- Trochę historii
- Przeznaczenie kodu
- Pisz zrozumiale, a nie sprytnie
- Uwagi na temat możliwości utrzymania kodu
- Używanie operatorów binarnych i zapisu ósemkowego, szesnastkowego i dwójkowego
- Nadawanie wartości zmiennym i stosowanie instrukcji goto
- Przesadne komentowanie
- Korzystanie z operatorów trójargumentowych
- Stosowanie skrótów
- Wprowadzanie w kodzie mikrooptymalizacji
- Programowanie na nowo metod z biblioteki SPL
- Podsumowanie
- Czym jest kod?
- ROZDZIAŁ 4. Tu chodzi o coś więcej niż sam kod
- PHP jako ekosystem
- Wybór właściwych bibliotek
- Parę słów o wersjonowaniu semantycznym
- Czym jest wersjonowanie semantyczne?
- Jak sobie radzić z wersjonowaniem semantycznym
- Stabilność kontra trendy
- Podsumowanie
- ROZDZIAŁ 5. Optymalizacja czasu pracy i rozdzielenie odpowiedzialności
- Konwencje nazewnicze i organizacyjne
- Pliki klas i interfejsów
- Pliki wykonywalne
- Elementy zawartości i zasoby sieci WWW
- Nazewnictwo klas, interfejsów i metod
- Nazewnictwo folderów
- Rozdzielenie odpowiedzialności
- Rozsyłanie zdarzeń
- Objaśnienie polimorfizmu – interfejsy i klasy abstrakcyjne
- Interfejsy
- Klasy abstrakcyjne
- Podsumowanie
- Konwencje nazewnicze i organizacyjne
- ROZDZIAŁ 6. PHP ewoluuje – deprecjacje i rewolucje
- Nowe wersje PHP w porównaniu ze starymi
- Ścisła kontrola typów
- Raportowanie błędów
- Atrybuty
- Przełom w wersji 8
- Konstrukcja match
- Argumenty nazwane
- Klasy i właściwości tylko do odczytu
- Migrowanie zasobów do odpowiednich klas
- Ochrona wrażliwych argumentów przed wyciekiem
- Podsumowanie
- Nowe wersje PHP w porównaniu ze starymi
CZĘŚĆ 2. Utrzymywanie jakości kodu
- ROZDZIAŁ 7. Narzędzia jakości kodu
- Wymagania techniczne
- Sprawdzanie składni i stylu kodu
- Linter wbudowany w PHP
- PHP CS Fixer: szperacz kodu
- Statyczna analiza kodu
- phpcpd – wykrywacz kopiowania i wklejania kodu
- PHPMD: wykrywacz bałaganu w PHP
- PHPStan – analizator statyczny dla języka PHP
- Psalm – maszyna lintująca do analizy statycznej dla PHP
- Rozszerzenie środowisk IDE
- PHP Inspections (EA Extended)
- Intelephense
- Podsumowanie
- Materiały dodatkowe
- ROZDZIAŁ 8. Wskaźniki jakości kodu
- Wymagania techniczne
- Prezentacja wskaźników jakości kodu
- Aspekty jakości oprogramowania
- Wskaźniki jakości kodu
- Zbieranie wskaźników w PHP
- phploc
- PHP Depend
- PhpMetrics
- Zalety i wady korzystania ze wskaźników
- Zalety
- Wady
- Podsumowanie
- Materiały dodatkowe
- ROZDZIAŁ 9. Organizacja narzędzi jakości PHP
- Wymagania techniczne
- Instalowanie narzędzi jakości kodu przy użyciu menedżera Composer
- Instalowanie narzędzi jakości kodu z wykorzystaniem sekcji require-dev
- Instalacja globalna
- Skrypty menedżera Composer
- Instalowanie narzędzi jakości kodu jako plików phar
- Utrzymywanie plików phar w porządku
- Zarządzanie plikami phar przy użyciu programu Phive
- Dodawanie menedżera Phive do projektu
- Podsumowanie
- ROZDZIAŁ 10. Testowanie automatyczne
- Wymagania techniczne
- Dlaczego potrzebujesz testów automatycznych?
- Łatwiejsza refaktoryzacja dzięki testom
- Typy testów automatycznych
- Testy jednostkowe
- Testy integracyjne
- Testy E2E
- Piramida testowa w praktyce
- Uwagi o pokryciu kodu
- Zapoznanie z pokryciem kodu
- Jak generować raporty o pokryciu kodu
- Korzystanie z adnotacji @covers
- Co testować?
- Podsumowanie
- Materiały dodatkowe
- ROZDZIAŁ 11. Ciągła integracja
- Wymagania techniczne
- Dlaczego ciągła integracja jest potrzebna?
- Koszty błędu
- Jak zapobiegać błędom
- Prezentacja ciągłej integracji
- Potok budowy
- Etap 1. – budowanie projektu
- Etap 2. – analiza kodu
- Etap 3. – testy
- Etap 4. – wdrożenie
- Integrowanie potoku z przepływem pracy
- Budowanie potoku w narzędziu GitHub Actions
- GitHub Actions w skrócie
- Etap 1. – budowanie projektu
- Etap 2. – analiza kodu
- Etap 3. – testy
- Etap 4. – wdrożenie
- Integrowanie potoku z własnym przepływem pracy
- Twój lokalny potok – haki narzędzia Git
- Konfigurowanie haków narzędzia Git
- Haki narzędzia Git w praktyce
- Zaawansowane użycie
- Dygresja – wprowadzanie ciągłej integracji do istniejącego oprogramowania
- Krok po kroku
- Spojrzenie na ciągłe dostarczanie
- Podsumowanie
- Materiały dodatkowe
- ROZDZIAŁ 12. Praca w zespole
- Wymagania techniczne
- Standardy pisania kodu
- Podążanie za istniejącymi standardami
- Zasady pisania kodu
- Przykładowe zasady pisania kodu
- Ustalanie zasad
- Przeglądy kodu
- Dlaczego należy dokonywać przeglądów kodu
- Co powinny obejmować przeglądy kodu?
- Najlepsze rozwiązania dotyczące przeglądów kodu
- Zapewnienie przeprowadzania przeglądów kodu
- Definicja ukończenia
- Wnioski na temat przeglądów kodu
- Wzorce projektowe
- Zapoznanie ze wzorcami projektowymi
- Wzorce projektowe często spotykane w języku PHP
- Antywzorce
- Podsumowanie
- Materiały dodatkowe
- ROZDZIAŁ 13. Tworzenie efektywnej dokumentacji
- Wymagania techniczne
- Dlaczego dokumentacja ma znaczenie?
- Dlaczego dokumentacja jest ważna?
- Dokumentacja dla programistów
- Tworzenie dokumentacji
- Dokumenty tekstowe
- Diagramy
- Generatory dokumentacji
- Dokumentacja w kodzie źródłowym
- Adnotacje nie są kodem
- Nieczytelny kod
- Nieaktualne komentarze
- Bezużyteczne komentarze
- Błędne lub nieprzydatne sekcje DocBlock
- Komentarze TODO
- Kiedy komentowanie jest przydatne?
- Testy jako dokumentacja
- Podsumowanie
- Materiały dodatkowe
Opinie
Na razie nie ma opinii o produkcie.