Czasami programiści są w sytuacji, że muszą dodać funkcję do aplikacji, ale nie mają czasu, aby zrobić to dobrze — zorganizować, dobrze ustrukturyzować i dopasować do reszty kodu.
Dodają funkcjonalność w nieco przypadkowy sposób, nieprzemyślany.
I co dzieje się z tym kodem, który nie jest przemyślany, być może błędny? W programowaniu istnieje coś takiego jak dług techniczny, jest to idea, która opisuje sytuacje kiedy prace są opóźnione podczas tworzenia oprogramowania i programiści próbują dostarczyć je na czas, rezygnując ze standardów kodowania. Takie szybkie rozwiązanie czasami działają, ale na dłuższą metę generuje masę problemów i nie jest najlepsze dla oprogramowania. Wykonana praca zamienia się następnie w „dług”, ponieważ w końcu trzeba będzie się z nim uporać i za niego zapłacić.
W tym artykule opiszemy czym jest refaktoryzacja kodu jako sposobowi na zmniejszenie długu technicznego.
Refaktoring jest to przemyślany proces modyfikacji kodu źródłowego, który nie zmienia jego działania, ale znacznie poprawia jego strukturę, jakość oraz czytelność. Refaktoring jest najczęściej wykonywany w celu poprawienia właśnie jakości kodu, w celu poprawienia możliwości jego rozwoju i utrzymania, a także zwiększenia wydajności aplikacji. Refaktoring również może obejmować takie działania jak np. zmiana nazw zmiennych lub funkcji na bardziej opisowe, rozbijanie dużych zbiorów klas lub funkcji na mniejsze, znalezienie duplikatów oraz usunięcie zduplikowanego, nadmiarowego kodu oraz ujednolicenie stylu kodowania. Refaktoring jest ważnym elementem procesu tworzenia oprogramowania i powinien być wykonywany regularnie wraz z rozwojem aplikacji.
Istnieje wiele sposobów na refaktoryzację, ale najczęściej polega ona na zastosowaniu serii standardowych, podstawowych działań, czasami nazywanych mikrorefaktoryzacja. Zmiany w istniejącym kodzie źródłowym nie zmieniają działania i funkcjonalności oprogramowania, ponieważ zmiany są tak małe, że jest mało prawdopodobne, że spowodują lub wprowadzą nowe błędy.
Na początku cel faktoryzacji może wydawać się nieco zbędny.
Nasi eksperci uważają, że celem refaktoryzacji kodu jest przepisanie brudnego kodu w czysty kod, co zmniejsza ogólny dług techniczny projektu.
Brudny kod jest to nieformalny termin odnoszący się do dowolnego kodu, który jest trudny w utrzymaniu i aktualizacji, a jeszcze trudniejszy do zrozumienia i przetłumaczenia.
Co oznacza termin długu technicznego?
Jeśli Twoja aplikacja zawiera brudny kod, będzie utrudniać prace nad rozwojem aplikacji, spowalniać przyszłe ulepszenia, ponieważ programiści będą musieli poświęcić więcej czasu na zrozumienie i śledzenie kodu, zanim będą mogli go zmienić.
Jeśli kod jest czysty, jak to tylko możliwe, znacznie łatwiej jest go zmieniać i ulepszać na kolejnych etapach prac developerskich.
Niektóre rodzaje brudnego kodu obejmują:
Potrzebę wykonania refaktoringu dość łatwo zdiagnozować ponieważ istnieje wiele sygnałów, które mogą wskazywać na to, że aplikacja wymaga refaktoryzacji. Oto kilka z nich:
Ogólnie rzecz biorąc, jeśli kod daje wrażenie, że jest nieczytelny, trudny do zrozumienia, lub programiści mają trudności z rozwojem lub utrzymaniem aplikacji, może to być dobry moment, aby zastanowić się nad refaktoryzacją.
Wymienimy kilka najbardziej powszechnych problemów w refaktoryzacji. Oczywiście jest ich bardzo dużo natomiast chcemy się skupić na tych najczęstszych i najważniejszych z naszego punktu widzenia.
Podczas refaktoryzacji można napotkać różne problemy, takie jak:
Trudno jest określić dokładny koszt refaktoryzacji, ponieważ będzie on zależał od wielu czynników, takich jak rozmiar aplikacji, stopień skomplikowania kodu, liczba programistów pracujących nad refaktoryzacją i łącznych stawek godzinowych. W przypadku dużych aplikacji refaktoryzacja może być bardzo kosztowna i zająć dużo czasu od kilkuset godzin do nawet kilku tysięcy roboczogodzin.
Aby oszacować koszt refaktoryzacji, należy przeanalizować kod aplikacji i ocenić, ile pracy będzie wymagała refaktoryzacja. Następnie należy obliczyć, ile godzin pracy będzie potrzebnych do jej wykonania i pomnożyć tę liczbę przez stawkę godzinową naszych programistów. Otrzymany wynik da ci przybliżony koszt refaktoryzacji.
Ogólnie rzecz biorąc, refaktoryzacja może zająć od kilku godzin do kilku miesięcy w zależności od rozmiaru i skomplikowania aplikacji. Dlatego ważne jest, aby dokładnie ocenić potrzebę refaktoryzacji i jej skalę, zanim zdecydujesz się ją wdrożyć.
Aby uniknąć refaktoryzacji, można stosować następujące praktyki:
Jest to bardzo dobra wiadomość dla Twojego projektu. Aplikacja po przeprowadzeniu refaktoryzacji będzie lepsza, łatwiejsza w rozbudowie, serwisie i tańsza w utrzymaniu. Jest to inwestycja, która szybko się zwróci.
Oczekiwanym wynikiem refaktoryzacji jest poprawa jakości kodu źródłowego aplikacji. Poprawa ta może być osiągnięta poprzez wprowadzenie lepszej struktury i czytelności kodu, usunięcie duplikatów kodu i ujednolicenie stylu kodowania. Innymi słowy, refaktoryzacja ma na celu uczynienie kodu łatwiejszym do zrozumienia i utrzymania dla programistów.
Poprawa jakości kodu może prowadzić do wielu korzyści, takich jak: