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
Uczestnik szkolenia “Praktyczne aspekty stosowania kryptografii w systemach komputerowych”
Michael Stephens, HID Global
potentially more worked through exercises with crypto 'bugs' to find to secure understanding, but aware that this would slow things down and reduce amount of content that could be covered in 5 days
Maciej Rosiński, int2code
Wszystko przestawione bardzo merytorycznie, z praktycznymi zagadnienia, dostarczone materiały pozwalały na wykonanie wszystkich zadań bezproblemowo
duzo pratycznej wiedzy, przystepnie podanej
Sebastian Sokołowski, int2code
Było dostosowane do poziomu grupy. Wykładowca odpowiadał na wszystkie pytania.
Uczestnik szkolenia “Architektura systemowa i integracja systemów dla analityków”
Michał Gębala
Zagadnienia w punkt, czuć doświadczenie trenera, realne przykłady, no nie ma do czego się przyczepić :)
Uczestnik szkolenia “Multiagentowe aplikacje AI”
Dorota Sobczak
Szkolenie zgodne z tematem , który mnie interesował, najbardziej jego pierwsza część.
Uczestnik szkolenia “Analiza kodu za pomocą SonarQube”
Adrian Ronowski, Centrum Zasobów Cyberprzestrzeni Sił Zbrojnych
Prowadzący ma wiedzę w omawianym temacie, chętnie ją przekazuje i odpowiada na pytania. Do zajęć był bardzo dobrze przygotowany.
Więcej opinii