Szkolenie: Refaktoryzacja Legacy Code - warsztat praktyczny
Szkolenie Refaktoryzacja Legacy Code to praktyczny warsztat dla programistów, uczący skutecznych technik refaktoryzacji, eliminacji code smells, zarządzania długiem technicznym, wdrażania wzorców projektowych oraz stosowania zasad SOLID i Clean Code w pracy z istniejącym kodem
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:3 dni (24h)
Kod kursu:REFACTORING/LEGACY
Refaktoryzacja Legacy Code - warsztat praktyczny
Cele szkolenia
Szkolenie przygotowuje do samodzielnego rozpoznawania i eliminowania code smells oraz zarządzania długiem technicznym w projektach programistycznych
Szkolenie uczy stosowania sprawdzonych technik refaktoryzacji i wzorców projektowych w celu poprawy jakości i elastyczności kodu legacy
Szkolenie pokazuje, jak wdrażać testy automatyczne i strategie testowania, umożliwiające bezpieczną refaktoryzację kodu niepokrytego testami
Szkolenie omawia zasady SOLID, Clean Code i czystej architektury, przygotowując do projektowania systemów o wysokiej spójności i niskim sprzężeniu
Szkolenie rozwija kompetencje w zakresie dokumentowania zmian, pracy zespołowej oraz podejmowania decyzji o refaktoryzacji lub przepisaniu systemu
Dla kogo?
Programiści pracujący z istniejącymi systemami i dużymi bazami kodu, posiadający praktyczną znajomość programowania obiektowego
Architekci oprogramowania, team leaderzy i technical leaderzy odpowiedzialni za jakość i rozwój projektów IT
Osoby wdrażające praktyki Clean Code oraz zespoły rozwijające i utrzymujące systemy legacy
Efekty kształcenia
Uczestnik analizuje i identyfikuje code smells w kodzie legacy
Uczestnik planuje i wdraża proces refaktoryzacji z użyciem testów automatycznych
Uczestnik stosuje wzorce projektowe w celu poprawy architektury systemu
Uczestnik dokumentuje zmiany i zarządza długiem technicznym
Uczestnik współpracuje w zespole podczas refaktoryzacji kodu
Uczestnik ocenia ryzyko i podejmuje decyzje dotyczące refaktoryzacji
Wymagania
Praktyczna znajomość programowania obiektowego w co najmniej jednym języku (Java, C#, Python, JavaScript/TypeScript lub podobne)
Podstawowa znajomość testów jednostkowych i frameworków testowych (JUnit, NUnit, pytest, Jest lub podobne)
Umiejętno ść czytania i rozumienia cudzego kodu
Podstawowa wiedza o wzorcach projektowych będzie atutem, ale nie jest wymagana
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Wprowadzenie do pracy z kodem legacy
Definicja i charakterystyka kodu legacy
Ryzyka i koszty utrzymania systemów legacy
Dług techniczny – identyfikacja, pomiar i zarządzanie
Code smells – rozpoznawanie symptomów niskiej jakości kodu
Metryki jakości kodu (złożoność cyklomatyczna, pokrycie testami, duplikacje)
Najczęstsze przyczyny powstawania kodu niskiej jakości
Kryteria decyzji: refaktoryzacja czy przepisanie systemu
Fundamenty refaktoryzacji
Istota i cele refaktoryzacji
Zasady bezpiecznej refaktoryzacji
Znaczenie testów w procesie refaktoryzacji
Piramida testów i strategie testowania
Wzorce Test Doubles (Mock, Stub, Spy, Fake)
Code coverage – zalety, ograniczenia i ryzyka nadużyć
Characterization tests – testowanie kodu bez istniejących testów
Techniki pracy z kodem legacy (Seams, Dependency Breaking)
Zasady dobrego projektowania
Kluczowe zasady: DRY, KISS, YAGNI
Zasady SOLID w praktyce
Projektowanie o wysokiej spójności i niskim sprzężeniu
Czysta architektura – założenia i popularne podejścia
Wzorce projektowe jako kierunek refaktoryzacji
Podstawowe refaktoryzacje – warsztat praktyczny
Extract Method
Extract Variable / Constant
Inline Method / Variable
Rename
Move Method / Field
Extract Class
Encapsulate Field
Encapsulate Collection
Encapsulate Conditional
Replace Magic Numbers with Named Constants
Refaktoryzacje hierarchii klas – warsztat praktyczny
Pull Up Method / Field – przeniesienie wspólnych metod/pól do klasy bazowej
Push Down Method / Field – przeniesienie metod/pól do konkretnych podklas
Extract Superclass – wyodrębnienie wspólnej klasy bazowej z podobnych klas
Extract Subclass – utworzenie podklasy dla specyficznego zachowania
Extract Interface – wyodrębnienie interfejsu definiującego kontrakt
Collapse Hierarchy – scalenie zbędnej klasy z rodzicem/potomkiem
Replace Inheritance with Composition – zamiana dziedziczenia na kompozycję
Refaktoryzacje do wzorców projektowych – warsztat praktyczny
Replace Conditional Logic with Strategy – enkapsulacja algorytmów w osobnych klasach
Replace Conditional with Polymorphism – zamiana switch/if na polimorfizm
Replace Type Code with Class – zastąpienie kodów typami
Encapsulate Composite with Builder – użycie Buildera do tworzenia struktur złożonych
Encapsulate Classes with Factory / Extract Factory Class – centralizacja tworzenia obiektów w fabryce
Move Embellishment to Decorator – przeniesienie dodatkowej funkcjonalności do dekoratorów
Replace State-Altering Conditionals with State – zamiana warunków na wzorzec State
Replace Hard-coded Notifications with Observer – zastąpienie bezpośrednich powiadomień wzorcem Observer
Replace Implicit Tree with Composite – zastąpienie ukrytej struktury drzewa wzorcem Composite
Unify Interfaces with Adapter – ujednolicenie niekompatybilnych interfejsów adapterem
Replace Conditional Dispatcher with Command – zamiana rozgałęzień na wzorzec Command
Apply Template Method – wyodrębnienie szkieletu algorytmu do metody szablonowej
Replace Distinctions with Composite – ujednolicenie różnych typów przez Composite
Limit Instantiation with Singleton – ograniczenie tworzenia instancji do jednej
Move Accumulation to Collecting Parameter / Visitor – przeniesienie agregacji do parametru zbierającego lub Visitora
Extract Composite – wyodrębnienie elastycznej struktury obiektowej
Zaawansowane refaktoryzacje – warsztat praktyczny
Break Dependencies – rozerwanie zależności między komponentami
Extract Method Object – wyodrębnienie metody do osobnej klasy
Break Responsibilities – podział nadmiernych odpowiedzialności klasy
Remove Duplication – usunięcie duplikacji kodu
Break Method – podział zbyt długiej metody na mniejsze
Introduce Parameter Object – grupowanie parametrów w obiekt
Remove Arrowhead Antipattern – spłaszczenie zagnieżdżonych instrukcji warunkowych
Introduce Design by Contract Checks – dodanie warunków wstępnych/końcowych
Remove Double Negative – usunięcie podwójnych zaprzeczeń
Remove God Classes – rozbicie klas z nadmiernymi odpowiedzialnościami
Remove Boolean Method Parameters – zamiana flag boolean na wyraźne metody
Remove Middle Man – usunięcie zbędnego pośrednika w delegacji
Return ASAP – natychmiastowy zwrot wartości bez zbędnych zmiennych tymczasowych
Strategie i dobre praktyki
Stopniowa refaktoryzacja kontra przepisanie systemu
Zasada Boy Scout – pozostawianie kodu w lepszym stanie niż zastany
Praca zespołowa w refaktoryzacji – komunikacja i code review
Dokumentowanie zmian w procesie refaktoryzacji
Narzędzia wspierające refaktoryzację (IDE, analiza statyczna, linters)
Zarządzanie ryzykiem w procesie refaktoryzacji
Wybrane opinie
Przeczytaj pozytywne opinie pochodzące z ankiet satysfakcji z naszych szkoleń wypełnianych wyłącznie przez ich uczestników po realizacji usługi

