Pisanie kodu według najnowszych wytycznych i zgodnie z aktualnymi trendami technologicznymi nie wystarczy, by uchronić projekt od kodu legacy. Kod napisany zgodnie z dokumentacją jest często wielokrotnie rozbudowywany o kolejne funkcje w ciągu wielu lat. Bez regularnej refaktoryzacji, czyli poprawiania jego czytelności i jakości z czasem kod się starzeje. Co to znaczy legacy code? Jak efektywnie pracować z kodem legacy? Postaramy się odpowiedzieć w niniejszym artykule.
W branży programistów istnieje kilka definicji legacy code. Pierwotnie tłumaczono legacy code jako kod dziedziczony. Oznacza to, że nad projektem pracuje inny programista niż osoba, która stworzyła system, stronę lub aplikację. Może to wynikać z przejęcia projektu przez inną firmę programistyczną, z którą rozpoczęto współpracę. Wówczas legacy code oznacza kod odziedziczony od zewnętrznej firmy, z którą współpraca została już zakończona. Legacy code to również kod przekazany innemu pracownikowi lub zespołowi, którego zadaniem jest kontynuacja prac nad projektem.
Projekty programistyczne prowadzone często przez wiele lat, są w tym czasie rozbudowywane lub przekształcane pod presją czasu. Wynika to ze zderzenia pierwotnej dokumentacji z rzeczywistymi potrzebami użytkowników systemu, a także dodawania nowych funkcji lub naprawiania bieżących błędów. Dlatego mianem legacy code określa się również wielokrotnie zmieniany, nieczytelny kod, z którym programistom bardzo trudno się pracuje.
Kod legacy to najczęściej kod, który istnieje od dłuższego czasu, przez co nie zastosowano w nim najnowszych rozwiązań i technologii. Rozbudowany i przekształcany przez wiele lat legacy code przestaje być optymalny. Praca z takim kodem wiążę się z wieloma ograniczeniami, dlatego poniżej przedstawiamy kilka podpowiedzi, jak poradzić sobie z legacy code.
W pierwszej kolejności postaraj się poznać kod legacy w projekcie. Poświęć czas na zrozumienie, jak działa system oraz poznaj zdefiniowane w kodzie funkcje. Rozwój oprogramowania jest wieloetapowym, długim procesem, przez co zmiany mogły powstawać na przestrzeni nawet wielu lat, co nie pozostaje bez wpływu na działanie aplikacji. Nie ma możliwości zrozumienia kodu w ciągu jednego dnia, więc najlepiej jest pracować nad nim partiami. Każdy przeanalizowany fragment kodu ułatwi późniejszą pracę nad jego zoptymalizowaniem.
Jeżeli masz dostęp do pierwotnej dokumentacji, koniecznie się z nią zapoznaj. Dzięki temu dowiesz się, jakie założenia miał system na początku. Pozwoli to łatwiej zauważyć zmiany w kodzie i efektywniej pracować nad legacy code.
Liczne zmiany sprawiły, że początkowa dokumentacja stała się nieaktualna. Warto w procesie poznawania jak działa program tworzyć notatki oraz uaktualniać bieżącą dokumentację.
Testy są bardzo ważnym elementem pracy z legacy code. Po wprowadzeniu zmiany w danym fragmencie kodu poświęć czas na zrobienie wyczerpujących testów. Testy pozwolą kontrolować zachowanie aplikacji po zmianach oraz szybko zauważyć błędy. Kolejne prace nad rozbudowaniem i ulepszaniem kodu będzie łatwiejsze i obarczone mniejszą ilością błędów.
Każdy kod powstający w pośpiechu, gdzie dodatkowo programista nie poświęcił czasu na jego optymalizację w pewnym momencie stanie się legacy. Dynamiczny rozwój oprogramowania sprawia, że zmiany wprowadzane często w przyspieszonym trybie są przyczyną powstającego długu technologicznego, a w konsekwencji legacy code.
Refaktoryzacja kodu przeprowadzana jest po to, aby ulepszyć kod bez wprowadzania zmian w działaniu całego programu i poszczególnych funkcjonalności. Proces refaktoryzacji polega na ulepszeniu kodu, który w konsekwencji staje się optymalny, czytelny oraz zrozumiały. Pracując nad refaktoryzacją z takim kodem, konieczne jest wykonanie wielu testów, by podczas ulepszania kodu nie zmienić sposobu działania programu.
Czy przepisanie kodu legacy jest dobrym pomysłem? Program, system lub aplikacja stworzona od podstaw zawsze będzie optymalna i najnowocześniejsza. Z drugiej strony tworzenie oprogramowania jest procesem długotrwałym i pracochłonnym zarówno dla firmy programistycznej, jak i firmy zlecającej wykonanie systemu.
Najlepiej przepisać kod w momencie, gdy wszystkie docelowe funkcje są już dokładnie określone i spisane w dokumentacji projektowej. W innym wypadku napisany od nowa program będzie znów przebudowywany i zmieniany, co może doprowadzić do sytuacji, że ponownie przekształci się w kod legacy.