SlideShare a Scribd company logo
Legacy code
Czym jest i jak z nim żyć…
Andrzej Fenzel
a.fenzel@devpark.pl
#Plan Prezentacji
1. Legacy Code – co to właściwie jest
2. Częste problemy przy Legacy Code
3. Narzędzia wspomagające pracę
4. Od czego zacząć i jak postępować
#1. Legacy Code – co to właściwie jest
Czy każdy kod „po kimś”
to zawsze legacy code?
Co jest przyczyną
powstania takiego kodu ?
Rozwój czy Modyfikacja?
#2. Częste problemy przy Legacy Code
Dług techniczny do spłacenia !!!
Brak dokumentacji
Framework w starszej wersji
Naprawa = więcej błędów
#2. Częste problemy przy Legacy Code
Brak testów = brak wykrywania błędów wynikających z zależności
Nietestowalny kod
Zapomnij o SOLID i wzorcach projektowych (nawet „MVC”)
Brak zerwania zależności – kod jest często zagnieżdżony, grube kontrolery
Pseudo obiektowość
Nieprawidłowe statusy odpowiedzi
Brak Migracji
Niekonsekwencja nazewnictwa, brak PSR
Mnóstwo „śmieci” (nieużywane elementy kodu, za komentowane bloki )
#3. Narzędzia wspomagające pracę
IDE (efektywność pracy)
PHPUnit (testy)
Xdebug (debugowanie)
Tinker (sprwadzanie w locie)
Profiler (optymalizacja)
Diagramy UML (specyfikacja)
PHP CS Fixer (PSR)
Continous Integration & Deployment
(automatyzacja z pomocą np... Docker + Jenkins + Git)
#4. Od czego zacząc i jak postępować
Smoke tests na wszystkie endpointy
Zebranie najlepszej możliwej
specyfikacji (stare dokumenty,
rozmowy z klientem etc)
Mikado Method - oczekiwany cel
Testy pierwsze
Refaktoring (nie zawsze!!)
#4. Od czego zacząc i jak postępować
Mikado Method
#4. Od czego zacząc i jak postępować
Dokończenie projektu
1. Testy integracyjne na wprowadzane zmiany
2. Mała zmiana po raz pierwszy? = bez refaktoringu
3. Zmiana kolejny raz w tym samym kodzie? = projektowanie + refaktoring + testy
jednostkowe
4. Duża zmiana kodu? Zależności powodują błędy? = projektowanie + refaktoring +
testy jednostkowe
Andrzej Fenzel
a.fenzel@devpark.pl

More Related Content

PDF
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
Laravel Poland MeetUp
 
PDF
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
Laravel Poland MeetUp
 
PDF
Kilka slajdów o castowaniu atrybutów w Eloquent
Laravel Poland MeetUp
 
PDF
Licencje otwartego oprogramowania
Laravel Poland MeetUp
 
PDF
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Laravel Poland MeetUp
 
PDF
Jak przemycić Shape Up do Scruma?
Laravel Poland MeetUp
 
PDF
Cykl życia zapytania HTTP (pod maską)
Laravel Poland MeetUp
 
PDF
Enumy w Laravelu - dlaczego warto stosować?
Laravel Poland MeetUp
 
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
Laravel Poland MeetUp
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
Laravel Poland MeetUp
 
Kilka slajdów o castowaniu atrybutów w Eloquent
Laravel Poland MeetUp
 
Licencje otwartego oprogramowania
Laravel Poland MeetUp
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Laravel Poland MeetUp
 
Jak przemycić Shape Up do Scruma?
Laravel Poland MeetUp
 
Cykl życia zapytania HTTP (pod maską)
Laravel Poland MeetUp
 
Enumy w Laravelu - dlaczego warto stosować?
Laravel Poland MeetUp
 

More from Laravel Poland MeetUp (20)

PDF
Laravelowe paczki do uwierzytelniania
Laravel Poland MeetUp
 
PDF
Przegląd najciekawszych wtyczek do Laravela
Laravel Poland MeetUp
 
PDF
Walidacja w Laravelu
Laravel Poland MeetUp
 
PDF
(prawie) Wszystko o Tinkerze
Laravel Poland MeetUp
 
PDF
Laravel Dusk - prosty przepis na testy E2E
Laravel Poland MeetUp
 
PDF
Laravel Octane - czy na pewno taki szybki?
Laravel Poland MeetUp
 
PDF
Laravel Jobs i PHP8
Laravel Poland MeetUp
 
PDF
Wszystko o Laravel Livewire
Laravel Poland MeetUp
 
PDF
Laravel/PHP - zderzenie z PDFami
Laravel Poland MeetUp
 
PDF
Action-based Laravel
Laravel Poland MeetUp
 
PDF
Automatyzacja utrzymania jakości w środowisku PHP
Laravel Poland MeetUp
 
PDF
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Laravel Poland MeetUp
 
PDF
Laravel Collection - tablice na sterydach
Laravel Poland MeetUp
 
PDF
Laravel 8.0 - co nowego?
Laravel Poland MeetUp
 
PDF
AOP w Laravel
Laravel Poland MeetUp
 
PDF
Speed up web API with Laravel and Swoole using Docker
Laravel Poland MeetUp
 
PDF
Laravel 6.0 - co nowego?
Laravel Poland MeetUp
 
PDF
Przetwarzanie Asynchroniczne i Promises w Laravel
Laravel Poland MeetUp
 
PDF
KPI w projektach IT
Laravel Poland MeetUp
 
PDF
Jak stworzyliśmy system kudosów w Laravelu i Slacku
Laravel Poland MeetUp
 
Laravelowe paczki do uwierzytelniania
Laravel Poland MeetUp
 
Przegląd najciekawszych wtyczek do Laravela
Laravel Poland MeetUp
 
Walidacja w Laravelu
Laravel Poland MeetUp
 
(prawie) Wszystko o Tinkerze
Laravel Poland MeetUp
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Poland MeetUp
 
Laravel Octane - czy na pewno taki szybki?
Laravel Poland MeetUp
 
Laravel Jobs i PHP8
Laravel Poland MeetUp
 
Wszystko o Laravel Livewire
Laravel Poland MeetUp
 
Laravel/PHP - zderzenie z PDFami
Laravel Poland MeetUp
 
Action-based Laravel
Laravel Poland MeetUp
 
Automatyzacja utrzymania jakości w środowisku PHP
Laravel Poland MeetUp
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Laravel Poland MeetUp
 
Laravel Collection - tablice na sterydach
Laravel Poland MeetUp
 
Laravel 8.0 - co nowego?
Laravel Poland MeetUp
 
AOP w Laravel
Laravel Poland MeetUp
 
Speed up web API with Laravel and Swoole using Docker
Laravel Poland MeetUp
 
Laravel 6.0 - co nowego?
Laravel Poland MeetUp
 
Przetwarzanie Asynchroniczne i Promises w Laravel
Laravel Poland MeetUp
 
KPI w projektach IT
Laravel Poland MeetUp
 
Jak stworzyliśmy system kudosów w Laravelu i Slacku
Laravel Poland MeetUp
 
Ad

Praca z Legacy Code

  • 1. Legacy code Czym jest i jak z nim żyć…
  • 3. #Plan Prezentacji 1. Legacy Code – co to właściwie jest 2. Częste problemy przy Legacy Code 3. Narzędzia wspomagające pracę 4. Od czego zacząć i jak postępować
  • 4. #1. Legacy Code – co to właściwie jest Czy każdy kod „po kimś” to zawsze legacy code? Co jest przyczyną powstania takiego kodu ? Rozwój czy Modyfikacja?
  • 5. #2. Częste problemy przy Legacy Code Dług techniczny do spłacenia !!! Brak dokumentacji Framework w starszej wersji Naprawa = więcej błędów
  • 6. #2. Częste problemy przy Legacy Code Brak testów = brak wykrywania błędów wynikających z zależności Nietestowalny kod Zapomnij o SOLID i wzorcach projektowych (nawet „MVC”) Brak zerwania zależności – kod jest często zagnieżdżony, grube kontrolery Pseudo obiektowość Nieprawidłowe statusy odpowiedzi Brak Migracji Niekonsekwencja nazewnictwa, brak PSR Mnóstwo „śmieci” (nieużywane elementy kodu, za komentowane bloki )
  • 7. #3. Narzędzia wspomagające pracę IDE (efektywność pracy) PHPUnit (testy) Xdebug (debugowanie) Tinker (sprwadzanie w locie) Profiler (optymalizacja) Diagramy UML (specyfikacja) PHP CS Fixer (PSR) Continous Integration & Deployment (automatyzacja z pomocą np... Docker + Jenkins + Git)
  • 8. #4. Od czego zacząc i jak postępować Smoke tests na wszystkie endpointy Zebranie najlepszej możliwej specyfikacji (stare dokumenty, rozmowy z klientem etc) Mikado Method - oczekiwany cel Testy pierwsze Refaktoring (nie zawsze!!)
  • 9. #4. Od czego zacząc i jak postępować Mikado Method
  • 10. #4. Od czego zacząc i jak postępować Dokończenie projektu 1. Testy integracyjne na wprowadzane zmiany 2. Mała zmiana po raz pierwszy? = bez refaktoringu 3. Zmiana kolejny raz w tym samym kodzie? = projektowanie + refaktoring + testy jednostkowe 4. Duża zmiana kodu? Zależności powodują błędy? = projektowanie + refaktoring + testy jednostkowe