Facebook Pixel
Sopchy logo blackSopchy logo white



Programiści pracujący nad legacy code

Legacy code - czym jest i jak z nim pracować?

Odpowiednie podejście do pracy z legacy code

W swojej karierze zawodowej programiści często spotykają się z określeniem legacy code. W wolnym tłumaczeniu termin ten oznacza kod dziedziczony, w rzeczywistości pojęcie to jest rozumiane na wiele sposobów. Niemniej jednak zazwyczaj przywołuje negatywne skojarzenia i wzbudza ogólny sceptycyzm i niezadowolenie u ludzi, którzy mają z nim pracować. Poniżej wyjaśnimy czym właściwie jest legacy code i dlaczego ma taką złą reputację w środowisku IT.

1. Legacy code - znaczenie

Jedną z najczęściej powielanych definicji legacy code jest ta, która mówi, że jest to kod, który nie został przetestowany. Przez to do końca nie wiadomo jak się zachowa ani jakie są możliwe schematy jego działania, a więc nie wiemy w jaki sposób możemy go zmienić. Inna z definicji mówi, że legacy code to kod, który mógł być przetestowany, ale w nieprawidłowy sposób wobec tego jest tak samo trudny w użyciu jak nie testowany kod. Z kolei niektórzy definiują legacy code jako przestarzały kod, który przez brak nowoczesnych rozwiązań nie pasuje do obecnej technologii i ciężko jest go do niej dopasować. Inni generalizują tę nazwę, aby określić kod, który jest niezrozumiały i trudny do zmiany. Zawsze trudniej pracuje się z kodem, którego nie tworzyliśmy od podstaw. Oczywiście można by pomyśleć, że najlepszym rozwiązaniem byłoby napisanie kodu od nowa, jednak nie jest to zawsze najlepsza opcja. Jeżeli jeszcze nie poznaliśmy systemu i nie wiemy jak zadziała, lepiej dobrze przeanalizować tę decyzję, ponieważ może okazać się zupełnie nierentowna. Jak więc umiejętnie podejść do legacy code żeby nie kojarzyła się z nieprzyjemnym obowiązkiem tylko ciekawym doświadczeniem?

2. Podejście do pracy z legacy code

Bardzo ważne jest nasze nastawienie do pracy z kodem. Jeżeli od początku będziemy zniechęceni do pracy i uznamy że będzie to trudne i monotonne, zapewne tak właśnie będzie. Nie warto też tracić czasu na rozważanie jak ktoś mógł popełnić taką ilość błędów w kodzie. Najczęściej nie znamy kompleksowej historii powstawania kodu, zwłaszcza jeżeli pisało go kilka różnych osób. To właśnie największe wyzwanie w pracy z legacy code - krok po kroku odkrywać zależności, które na pierwszy rzut oka nie są oczywiste. Chodź niekiedy jest to żmudna praca, ma również swoje dobre strony. Pozwala nam wrócić do podstaw programowania takich jak pisanie czystego kodu, wykorzystywanie dobrych praktyk czy poprawne testowanie. Niezależnie od wiedzy i umiejętności, praca z legacy code to nie zadanie, które można wykonać niezwłocznie. Wręcz przeciwnie - wymaga dużego skupienia i podjęcia kroków, których pominięcie sprawi, że wrócisz do punktu wyjścia.

Pierwszym ważnym krokiem, który powinno się wykonać jest zapoznanie się z dokumentacją (o ile jest dostępna). Jeżeli poznamy pierwotne wymagania projektu być może lepiej zrozumiemy obecną strukturę kodu i co jego twórca chciał osiągnąć. Po drugie należy pamiętać, aby nie przepisywać na nowo zbyt dużej ilości elementów. Może okazać się, że przepisanie kodu spowoduje nowe błędy lub zniszczy powiązania, których jeszcze nie odkryliśmy. Zamiast przepisywać kod znacznie lepiej przeprowadzić refaktoryzację (zmienić strukturę kodu nie zmieniając jego funkcjonalności). Najlepiej refaktoryzować kod stopniowo, wdrażanie zbyt wielu zmian na raz może spowodować niepotrzebne zamieszanie. Pamiętaj też, żeby wprowadzać zmiany tylko tam, gdzie to konieczne. To że kod wydaje Ci się zupełnie niewłaściwy i nie pasujący do obecnych standardów, nie oznacza, że w całości jest błędny. Dlatego też trzeba zagłębić się w strukturę kodu i przeanalizować, w które elementy można ingerować, a które pozostawić niezmienione.

Nie warto zakładać, że praca z legacy code to ciężki i skomplikowany proces. Znacznie lepiej traktować legacy code jak układankę, w której łączenie kolejnych elementów daje dużą satysfakcję, a cały proces układania daje nam lekcje cierpliwości, wytrwałości oraz dokładnych testów. Biorąc pod uwagę, że każdy kod stanie się kiedyś w pewnym stopniu legacy code, lekcja ta nie ominie większości osób zajmujących się programowaniem.