| Tytuł: | Test Driven Development w C++ od ogółu do szczegółu |
| Kod: | CCPP-craft-C++ TDD |
| Kategoria: | Craftsmanship dla programistów C i C ++ |
| Forma: | 40% wykłady / 60% warsztaty |
| Czas trwania: | 3 dni |
| Odbiorcy: | developerzy, architekci |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Szkolenie przeznaczone jest dla programistów, którzy w codziennej pracy korzystają z języka C++.
.
Program Szkolenia
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
TDD – podstawowe założenia- Test(y) i automatyzacja
- Implementacja bez szczególnego nacisku na jakość
- Refaktoryzacja – konieczna część całego procesu
- Test(y) i automatyzacja
-
Dobry start- Makro-architektura podstawą sukcesu
- Paradygmat OOP i jego poprawne rozumienie
- Stosowanie sprawdzonych technik na rzecz testowalnego i rozszerzalnego kodu
- Paradygmat OOP i jego poprawne rozumienie
- POSA czyli architektura w oparciu o sprawdzone wzorce
- Makro-architektura podstawą sukcesu
-
Test(y)- Definicja punktu odcięcia (inflection point)
- Projekt testu(ów)
- Framework i jego możliwości
- Definicja punktu odcięcia (inflection point)
-
Implementacja- Dbałość o szczegóły a dbałość o architekturę
- Implementacja zorientowana na działanie
- Otestowanie zupełne – wprowadzenie testów dla tzw. „corner case'ów”
- Dbałość o szczegóły a dbałość o architekturę
-
Refaktoryzacja- Czym jest refaktoryzacja?
- Kiedy zacząć refaktoryzację?
- Refaktoryzacja właściwa (do wzorców)
- Upraszczanie kodu
- Ekstrakcja metod
- Strategia w zamian za naiwne warunki logiczne
- Zamiana upiększeń w dekorator
- Klasy stanu na rzecz wyrażeń zmian stanu
- Ekstrakcja metod
- Tworzenie obiektów
- Metody tworzące obiekty vs. naiwne konstruktory
- Fabryka abstrakcyjna
- Budowniczy dla tworzenia skomplikowanych struktur i kompozytów
- Singleton – a może zło wcielone
- Metody tworzące obiekty vs. naiwne konstruktory
- Uogólnianie kodu
- Metoda szablonowa – wprowadzenie dziedziczenia na rzecz polimorfizmu
- Kompozyt – traktowanie zbiorów jak jednostki
- Obserwator do obsługi notyfikacji
- Adapter na rzecz unifikacji interfejsów
- Interpreter – obsługa niejawnych języków
- Metoda szablonowa – wprowadzenie dziedziczenia na rzecz polimorfizmu
- Prewencja
- Akumulacja
- Gromadzenie danych w parametrze zbierającym
- Visitor do zbierania danych
- Akumulacja
- Upraszczanie kodu
- Czym jest refaktoryzacja?
-
Value objects – zamiana typów prostych klasami -
Narzędzia- Cppcheck – statyczna analiza kodu
- CPD – copy paste detector
- CCCC – analiza złożoności logicznej
- Valgrind – analiza sterty (memcheck), śledzenie wskaźników (ptrcheck), analiza wielowątkowa (hellgrind)
- Cppcheck – statyczna analiza kodu
-
R.I.P. TDD – problemy- Over-engineering
- Późna informacja zwrotna o trafności decyzji w fazie planowania architektury
- Błędy logiczne
- Trudności w dokumentowaniu
- Przytłoczenie – trudości w wyobrażeniu testu
- Trudności w ukryciu separacji API od szczegółów implementacyjnych
- Trudności w komunikacji
- Ciągły niepokój – czy wszystko zmierza w dobrym kierunku?
- Over-engineering
-
Zastosowanie TDD w pracy z kodem „legacy”- Bezpieczne wprowadzenie zmian w oparciu o TDD
- Zbieżność metodyki postępowania
- Inflection point
- Test
- Change
- Check
- Inflection point
- Bezpieczne wprowadzenie zmian w oparciu o TDD
Pobierz program w formacie PDF