Trwają zapisy do grupy
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
Program szkolenia legacy-code modernizacja-aplikacji utrzymanie-systemow refaktoryzacja-legacy
+23% VAT (3136,50 PLN brutto / 1 os.) Zapisz się Czy wiesz, że możesz uzyskać nawet do 100% dofinansowania* na szkolenie? *Nie dotyczy instytucji publicznych np. uczelni
Napisz do nas » FAQ Oferta dla firm
Dostosujemy 🔵 program 🔵 termin 🔵 wycenę
👉 Sukces Twojego zespołu zaczyna się od naszych szkoleń!
Zapytaj 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: Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
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
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 Variable / Constant
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
Autorem szkolenia jest Łukasz Andrzejewski Od ponad 17 lat z pasją dzielę się wiedzą jako trener, wspierając rozwój kompetencji technologicznych wśród specjalistów IT na różnych etapach ich kariery. W ostatnich 5 latach przeszkoliłem ponad 2000 osób, prowadząc szkolenia zarówno otwarte, jak i dedykowane, dla czołowych firm z sektorów bankowości, ubezpieczeń i IT – m.in. Santander Bank Polska, ERGO Hestia, Asseco Poland oraz Orange.
Specjalizuję się w szerokim zakresie technologii – od rozwiązań z ekosystemu Java, przez nowoczesny frontend,…
Więcej o mnie 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
Yevgeniy Wyszyński, Samsung Electronics Polska
Prowadzący był dobrze przygotowany, materiał odzwierciedlał wszystko co jest potrzebne dla nauki
Marcin Matyszkowicz, Samsung Electronics Polska
Super interaakcja z prowadzącym, na luzie a bardzo merytorycznie
Uczestnik szkolenia “Tworzenie i walidacja specyfikacji funkcjonalnej wymagań”
Adrianna Jankowska
Szkolenie prowadzone było w sposób przyjemny, dużo zadań i praktycznego rozwiązywania problemów. Treści przedstawione prosto i merytorycznie
Anna Rybczak, Capgemini Polska Sp. z o.o.
We learned a lot of important things, and we had a lot of examples, we write a lot of code so it was much better to learn and remember the material.
Uczestnik szkolenia “Deep learning”
Wiesław Dudziak
Dużo teorii i praktyki ze zwróceniem uwagi na aktualnie stosowane rozwiązania w DL.
Uczestnik szkolenia “Kubernetes w praktyce”
Łukasz Szulc, BOEING POLAND Sp. z o.o.
Prowadzący z ogromną wiedzą, bardzo kontaktowy. Szkolenie mi się nie przyda, ale człowiek przynajmniej się czegoś nowego dowiedział :)
Uczestnik szkolenia “Kubernetes w praktyce”
Dominik Dembski, BOEING POLAND Sp. z o.o.
Duzo zadan praktycznych, ukierunkowane pod dewelopera
Więcej opinii