SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Ähnlich wie Praca z 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
 

Ähnlich wie Praca z 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
 

Mehr von Laravel Poland MeetUp

WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...Laravel Poland MeetUp
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) Laravel Poland MeetUp
 
Kilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentKilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentLaravel Poland MeetUp
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Laravel Poland MeetUp
 
Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Laravel Poland MeetUp
 
Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Laravel Poland MeetUp
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravel Poland MeetUp
 
Przegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaPrzegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaLaravel Poland MeetUp
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Poland MeetUp
 
Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Poland MeetUp
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPLaravel Poland MeetUp
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelLaravel Poland MeetUp
 

Mehr von Laravel Poland MeetUp (20)

WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
 
Kilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentKilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w Eloquent
 
Licencje otwartego oprogramowania
Licencje otwartego oprogramowaniaLicencje otwartego oprogramowania
Licencje otwartego oprogramowania
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
 
Jak przemycić Shape Up do Scruma?
Jak przemycić Shape Up do Scruma?Jak przemycić Shape Up do Scruma?
Jak przemycić Shape Up do Scruma?
 
Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)
 
Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelniania
 
Przegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaPrzegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do Laravela
 
Walidacja w Laravelu
Walidacja w LaraveluWalidacja w Laravelu
Walidacja w Laravelu
 
(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2E
 
Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?
 
Laravel Jobs i PHP8
Laravel Jobs i PHP8Laravel Jobs i PHP8
Laravel Jobs i PHP8
 
Wszystko o Laravel Livewire
Wszystko o Laravel Livewire Wszystko o Laravel Livewire
Wszystko o Laravel Livewire
 
Laravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFamiLaravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFami
 
Action-based Laravel
Action-based LaravelAction-based Laravel
Action-based Laravel
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
 

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