Refaktoryzacja

Download Report

Transcript Refaktoryzacja

Refaktoryzacja
Robert Pająk
Plan
• Wprowadzenie
• Demo
• Podsumowanie, czyli trochę teorii
Definicja
Refaktoryzacja - zmiana wewnętrznej struktury
oprogramowania, sprawiająca, że kod staje się
łatwiejszy do zrozumienia i tańszy w utrzymaniu.
Zmiana ta nie wpływa na obserwowalne
zachowanie programu.
Refaktoryzacja to sprzątanie
Czym powinna być refaktoryzacja
• Ta sama funkcjonalność
• Lepsza struktura
Ryzyka (przy złej refaktoryzacji):
• Wprowadzenie trudno wykrywalnych błędów
• Można się zapędzić i utknąć w czarnej dziurze
• Strata czasu
Case: Wypożyczalnia filmów
Case: Wypożyczalnia filmów (1/2)
Przed zmianą
Po ekstrakcji metod
Case: Wypożyczalnia filmów (2/2)
Przed zmianą
Po dodaniu funkcjonalności
Dlaczego refaktoryzacja jest ważna
•
•
•
•
•
Ulepszenie projektu
Poprawa czytelność
Identyfikacja błędów
Przyspieszenie programowania
Ułatwia wprowadzanie kolejnych zmian
Jak refaktoryzować
• Metafora 2 kapeluszy
• Solidny pakiet samosprawdzalnych testów
• Krokowo (testowanie -> mała zmiana)
• Zgodnie z zasadami OOAD (np. SOLID)
• Wykorzystanie wzorców projektowych
• „Czyszczenie” kodu
Kiedy refaktoryzować
•
•
•
•
Zasada do trzech razy sztuka
Przed dodaniem nowej funkcjonalności
Po wykryciu błędu
Podczas inspekcji kodu (ang. code review)
• Projektowanie a Refaktoryzacja
• Wydajność a Refaktoryzacja
Literatura
• http://martinfowler.com/refactoring/
• „Refaktoryzacja. Ulepszanie struktury istniejącego
kodu”, Martin Fowler, Kent Beck…
• „Kod doskonały. Jak tworzyć oprogramowanie
pozbawione błędów. Wydanie II”, Steve McConnell
• „Czysty kod. Podręcznik dobrego programisty”, Robert
C. Martin
• „Wzorce projektowe. Elementy oprogramowania
obiektowego wielokrotnego użytku”, GoF
• „UML i wzorce projektowe. Analiza i projektowanie
obiektowe oraz iteracyjny model wytwarzania aplikacji.
Wydanie III”, Craig Larman
[email protected]