SlideShare a Scribd company logo
1 of 11
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

Similar to Legacy code

Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiej
Code Review, czyli przegląd kodu -  prezentacja tematu pracy magisterskiejCode Review, czyli przegląd kodu -  prezentacja tematu pracy magisterskiej
Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiejWiktor Gworek
 
Code review
Code reviewCode review
Code reviewDivante
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?GameDesire Company
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksXSolve
 
Testowanie bezpieczeństwa aplikacji mobilnych
Testowanie bezpieczeństwa aplikacji mobilnychTestowanie bezpieczeństwa aplikacji mobilnych
Testowanie bezpieczeństwa aplikacji mobilnychSlawomir Jasek
 
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETProgramowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETMikołaj Olszewski
 

Similar to Legacy code (9)

[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
 
Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiej
Code Review, czyli przegląd kodu -  prezentacja tematu pracy magisterskiejCode Review, czyli przegląd kodu -  prezentacja tematu pracy magisterskiej
Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiej
 
TDD w iOS
TDD w iOS TDD w iOS
TDD w iOS
 
Code review
Code reviewCode review
Code review
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricks
 
Testowanie bezpieczeństwa aplikacji mobilnych
Testowanie bezpieczeństwa aplikacji mobilnychTestowanie bezpieczeństwa aplikacji mobilnych
Testowanie bezpieczeństwa aplikacji mobilnych
 
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETProgramowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
 

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