What is code refactoring?




Refaktoryzacja kodu to proces wprowadzania zmian w projekcie/programie, w wyniku których nie zmienia się funkcjonalność, lecz utrzymuje się odpowiednią, wysoką jakość organizacji systemu. Celem refaktoryzacji jest poprawa kodu i jego struktury, a nie wytwarzanie nowej funkcjonalności.

Oczekiwane korzyści z refaktoryzacji

Refaktoryzacja ma na celu rozwiązanie konkretnych problemów i przyniesienie korzyści, takich jak:

  • Łatwiejsza rozbudowa systemu
  • Lepsza współpraca programistów
  • Mniej czasu na dyskusje, więcej czasu na dobre rozwiązania
  • Łatwiejsze wdrażanie zmian
  • Mniej błędów
  • Mniejsze wydatki na wsparcie i rozwój w przyszłości

Lista korzyści jest długa i nieograniczona. Przed przystąpieniem do refaktoryzacji ważne jest określenie celu, jaki chcemy osiągnąć.

Daily Refactoring - codzienne ulepszanie kodu

Podstawowym krokiem do utrzymania dobrze zorganizowanego kodu jest codzienne refaktoryzowanie. Zgodnie z koncepcją Test-Driven Development (TDD), cykl wytwarzania kodu składa się z trzech kroków: red (tworzenie testów jednostkowych, które nie przechodzą), green (implementacja kodu produkcyjnego, który pozwala na przejście testów) oraz refactor (poprawa kodu w celu jego ulepszenia).

Codzienne refaktoryzowanie charakteryzuje się tym, że:

  • Funkcjonalność jest pokryta przez testy
  • Większość zadań refaktoryzacyjnych może być wykonana automatycznie przez środowisko programistyczne (IDE)
  • Nie wymaga dużego nakładu czasu

Przykłady metod stosowanych w codziennym refaktoryzowaniu to m.in. zmiana nazwy (Rename), zmiana sygnatury (Change Signature), wyodrębnianie metod (Extract Method), wstawianie kodu inline (Inline method), wprowadzanie stałych (Introduce Constant), wprowadzanie pól (Introduce Field), wprowadzanie parametrów (Introduce Parameter), wprowadzanie zmiennych (Introduce Variable) oraz bezpieczne usuwanie (Safe Delete).

Strategic Refactoring - zmiany na większą skalę

Kolejnym krokiem jest refaktoryzacja strategiczna, która dotyczy większych zmian w systemie, takich jak modyfikacja większej liczby klas, modyfikacja całego modułu lub nawet wydzielenie osobnego mikroserwisu.

W refaktoryzacji strategicznej rozważane są zmiany, które mają na celu dostosowanie kodu do nowych wymagań biznesowych lub technologicznych. Przykłady takich zmian to migracja do nowoczesnych frameworków lub języków, zmiana architektury systemu, wprowadzenie wzorców projektowych, rozdzielenie odpowiedzialności między klasy lub moduły oraz usunięcie zbędnego lub przestarzałego kodu.

Refaktoryzacja strategiczna wymaga więcej czasu i planowania, ale przynosi większe korzyści w dłuższej perspektywie. Jest częścią zarządzania projektem informatycznym.




Podsumowanie

Refaktoryzacja kodu jest ważnym elementem tworzenia oprogramowania, który pozwala utrzymać aplikacje w dobrej kondycji i umożliwia ich rozwój. Codzienne refaktoryzowanie oraz refaktoryzacja strategiczna są dwa rodzaje refaktoryzacji, które mają swoje miejsce w procesie tworzenia oprogramowania. Ważne jest, aby regularnie i systematycznie wykonywać codzienne refaktoryzowanie, a także planować i przeprowadzać refaktoryzację strategiczną w celu dostosowania kodu do nowych wymagań.

Pamiętajmy, że refaktoryzacja ma na celu poprawę jakości kodu i organizacji systemu, co przekłada się na efektywność i łatwiejsze rozwijanie aplikacji. Przed przystąpieniem do refaktoryzacji warto określić oczekiwane korzyści i realistyczny zakres czasowy dla ich osiągnięcia.


Komentarze