Praca z kodem odziedziczonym (Legacy Code)
LICZBA DNI: 3 (24h)
KOD KURSU: LEGACY
O szkoleniu
DLA KOGO?
Szkolenie adresowane jest do programistów pracujących na co dzień z kodem odziedziczonym (Legacy Code) lub kodem drogim w utrzymaniu (w którym wprowadzenie drobnych zmian zajmuje wiele wysiłku i/lub skutkuje pojawieniem się wielu błędów)
WYMAGANIA
Od uczestników szkolenia wymagana jest umiejętność programowania w języku Java oraz znajomość frameworków do testowania jednostkowego (np. JUnit, TestNG)
ZALETY
Szkolenie prowadzone jest przez trenerów, którzy mają duże doświadczenie w pracy z kodem odziedziczonym. Przeprowadzają oni krok po kroku uczestników przez tajniki pracy z LC
Zdecydowana przewaga zajęć warsztatowych pozwala uczestnikom zmierzyć się z nietrywialnymi przykładami LC (pod bacznym okiem trenera), nabyć praktyczne umiejętności refaktoryzacji i testowania trudnego kodu
Cele szkolenia
Zapoznanie uczestników z zagrożeniami oraz problemami wynikającymi z pracy z kodem odziedziczonym oraz sposobu ich przezwyciężenia
Wypracowanie algorytmu pracy z kodem Legacy
Nauka pracy i wprowadzania zmiany w LC tak aby zminimalizować ryzyko wprowadzenia błędów
Poznanie technik refaktoryzacji, pozwalających stopniowo podnosić jakość kodu odziedziczonego
Program
Techniki refaktoryzacji
- Czym jest refaktoryzacja
- Kiedy (nie) refaktoryzować
- Zapachy w kodzie (Code Smells)
- Katalog refaktoryzacji
- Refaktoryzacja do wzorców
- Wykorzystanie IDE
Kod odziedziczony (Legacy Code)
- Czym jest Legacy Code
- Ryzyka wynikające z pracy z LC
- Dlaczego praca z LC jest taka trudna
- Metody pracy z LC (Edit and Pray vs. Cover and Modify)
- Algorytm pracy z LC
Szwy (Seam Model)
- Czym są szwy
- W jaki sposób szwy pomagają testować
- Jak znajdować szwy
Techniki łamania zależności (Dependency Breaking)
- Jakie zależności są najbardziej kłopotliwe
- Jak łamać zależności
- Katalog technik łamania zależności
- Ukryte i globalne zależności
- Olbrzymie metody
- Kłopotliwe zależności do zewnętrznych bibliotek
- Zbyt wiele odpowiedzialności
- Skutki łamania zależności
Analiza efektów (Effect Sketches)
- Wnioskowanie o efektach wprowadzanych zmian
- Znajdowanie najbardziej optymalnych punktów testowania (Interception Poitns)
Testy charakteryzacyjne (Characterization Tests)
- W jaki sposób wprowadzać zmiany aby nie wprowadzać błędów
- Jak dobrać kontekst testów charakteryzacyjnych
Wzorce pracy z LC (Reengineering Patterns)
