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
Grupa docelowa: architekci
developerzy
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

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.

  1. TDD – podstawowe założenia
    1. Test(y) i automatyzacja
    2. Implementacja bez szczególnego nacisku na jakość
    3. Refaktoryzacja – konieczna część całego procesu
  2. Dobry start
    1. Makro-architektura podstawą sukcesu
      1. Paradygmat OOP i jego poprawne rozumienie
      2. Stosowanie sprawdzonych technik na rzecz testowalnego i rozszerzalnego kodu
    2. POSA czyli architektura w oparciu o sprawdzone wzorce
  3. Test(y)
    1. Definicja punktu odcięcia (inflection point)
    2. Projekt testu(ów)
    3. Framework i jego możliwości
  4. Implementacja
    1. Dbałość o szczegóły a dbałość o architekturę
    2. Implementacja zorientowana na działanie
    3. Otestowanie zupełne – wprowadzenie testów dla tzw. „corner case'ów”
  5. Refaktoryzacja
    1. Czym jest refaktoryzacja?
    2. Kiedy zacząć refaktoryzację?
    3. Refaktoryzacja właściwa (do wzorców)
      1. Upraszczanie kodu
        1. Ekstrakcja metod
        2. Strategia w zamian za naiwne warunki logiczne
        3. Zamiana upiększeń w dekorator
        4. Klasy stanu na rzecz wyrażeń zmian stanu
      2. Tworzenie obiektów
        1. Metody tworzące obiekty vs. naiwne konstruktory
        2. Fabryka abstrakcyjna
        3. Budowniczy dla tworzenia skomplikowanych struktur i kompozytów
        4. Singleton – a może zło wcielone
      3. Uogólnianie kodu
        1. Metoda szablonowa – wprowadzenie dziedziczenia na rzecz polimorfizmu
        2. Kompozyt – traktowanie zbiorów jak jednostki
        3. Obserwator do obsługi notyfikacji
        4. Adapter na rzecz unifikacji interfejsów
        5. Interpreter – obsługa niejawnych języków
      4. Prewencja
        1. Akumulacja
        2. Gromadzenie danych w parametrze zbierającym
        3. Visitor do zbierania danych
  6. Value objects – zamiana typów prostych klasami
  7. Narzędzia
    1. Cppcheck – statyczna analiza kodu
    2. CPD – copy paste detector
    3. CCCC – analiza złożoności logicznej
    4. Valgrind – analiza sterty (memcheck), śledzenie wskaźników (ptrcheck), analiza wielowątkowa (hellgrind)
  8. R.I.P. TDD – problemy
    1. Over-engineering
    2. Późna informacja zwrotna o trafności decyzji w fazie planowania architektury
    3. Błędy logiczne
    4. Trudności w dokumentowaniu
    5. Przytłoczenie – trudości w wyobrażeniu testu
    6. Trudności w ukryciu separacji API od szczegółów implementacyjnych
    7. Trudności w komunikacji
    8. Ciągły niepokój – czy wszystko zmierza w dobrym kierunku?
  9. Zastosowanie TDD w pracy z kodem „legacy”
    1. Bezpieczne wprowadzenie zmian w oparciu o TDD
    2. Zbieżność metodyki postępowania
      1. Inflection point
      2. Test
      3. Change
      4. Check


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Wymagania przed Szkoleniem

Środowisko
  • System operacyjny: do uzgodnienia  
  • Kompilatory: do uzgodnienia  
  • Framework'i: Gtest, Gmock 

Zapytaj o szkolenie

Imię i nazwisko:
Firma:
E-mail/Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń