Jak radzić sobie z legacy code?

To pytanie zadaję sobie pewnie wielu z Was. Zapoznanie się ze starszym kodem jest procesem, który zachodzi w czasie. Ale jak w ogóle zaczynasz? Jak podchodzisz do bazy kodu, której nie znasz, która jest słabo przetestowana i niezupełnie udokumentowana?

Próba wskoczenia i odczytania kodu bez określonego celu wykraczającego poza jego naukę jest generalnie mało produktywna. A jednak to właśnie robi większość z nas, ponieważ tak naprawdę nie znamy lepszego sposobu 🤷‍♂️

Z pomocą przychodzi The Legacy Code Programmer Toolbox!

W swojej książce Jonathan Boccara skupia się na technikach rozumienia starego kodu źródłowego. Znajdziesz tam konkretne techniki zrozumienia zastanego kodu.

Po pierwsze, przyjmij produktywną postawę

Podczas nurkowania strukturę starego kodu, to bardzo naturalnym są myśli WTF: Kto ***** napisał? Dlaczego to jest takie zawiłe?!

Jedyny ważny pomiar jakości kodu: WTF na minutę

Jest to reakcja jest instynktowna: nie jesteś zaznajomiony z kodem, a biorąc pod uwagę kontekst, który masz, zdajesz sobie sprawę, że będzie to wyzwanie znacznie trudniejsze niż oczekiwałeś.

Jednak jako profesjonalista musisz przezwyciężyć tę reakcję. Niezależnie od jakości kodu pamiętaj, że:

  • Oprogramowanie nad którym pracujesz jest prawdopodobnie rozwijane od wielu lat i działa wystarczająco dobrze, aby opłacić twoje wynagrodzenie.
  • Kod jest pełny poprawek błędów i wiedzy, której w tej chwili nie masz. Często nie docenia się tego, co faktycznie robi kod.
  • Ludzie, którzy to napisali, zrobili to w innym kontekście, z mniejszą wiedzą niż mają teraz.
  • Wiele osób pracuje nad tym kodem od wielu lat, to mozaika wiedzy i kontekstu.

Oto dwie rady, jeśli znajdujesz się w takiej sytuacji:

  1. Nie narzekaj, jeśli nie zamierzasz ulepszać kodu. Głośne narzekanie przynosi w tej chwili ulgę, ale ma odwrotny skutek dla morale zespołu. Jeśli zajmujesz stanowisko Senior / Tech Lead, jest to szczegółnie ważne: nie szerz złego, niekonstruktywnego podejścia u juniorów. Przyjmij postawę zen, aby ich zainspirować!
  2. Weź pod uwagę, że kod, nad którym pracujesz, jest Twoim kodem. Odziedziczyłeś to, musisz przejąć, że to Twoja własność. Ty teraz rządzisz! Zaakceptuj, że kod ma wady. Nie naprawisz ich wszystkich. Ale zrobisz wszystko, co w Twojej mocy, aby był lepszej jakości.

Wiemy, że to trudne, jednak narzekanie na to, co jest nie tak, nie rozwiązuje problemu, a jedynie tworzy bolesną aurę wokół kodu. Zamiast skupiać się na tym, co nie jest właściwe, skup się na tym, co jest dobre i włóż energię w to, co należy zrobić – w końcu płacą Ci za rozwiązywanie problemów dla ludzi!

Następnie użyj tych 9 technik, aby zrozumieć legacy code.

  1. Wybierz twierdzę . Znajdź miejsce w kodzie, które dobrze rozumiesz i poszerzaj swoją wiedzę. Nawiązuj połączenia z otaczającym kodem ,poszerzając swoją wiedzę, jakbyś rozproszał mgłę wojny w grach wideo.

  2. Zacznij od punktów wejścia (input) i wyjścia programu (output). Program musi pobierać dane wejściowe i gdzieś generować wyniki. Znajdź je. Mogą stać się twoją twierdzą. 

  3. Analizuj dobrze dobrane stosy. Użyj debuggera i umieść breakpoint głęboko w stosie typowego przypadku użycia aplikacji. Stos połączeń da ci dobry obraz tego, co jest wykonywane. Wykresy płomieniowe pomogą Ci poznać zależności.

  4. Pracuj wstecz z wyjściami funkcji. Jest to zgodne z poprzednią radą: zacznij od wyjść systemu. Jeśli Twój system jest skomplikowaną funkcją, zacznij od instrukcji zwrotnych. Szukaj efektów ubocznych.

  5. Zidentyfikuj terminy, które często występują . Szybko da ci wgląd w to, czego dotyczy ta funkcja. Podświetl te słowa w swoim IDE i zobacz, czy potrafisz zidentyfikować wzorce. 

  6. Filtruj według przepływu. Wystarczy skupić się na słowach kluczowych przepływu (np ifelseswitchtry, itp). W ten sposób szybko poznasz wysokopoziomową strukturę kodu.

  7. Wyróżnij główne działanie funkcji . Skopiuj funkcję w wersji roboczej i baw się nią. Usuń linie, które nie wyglądają na główną akcję. Kod nie musi się kompilować, chodzi o to, abyś szybko zrozumiał krytyczną część funkcji.

  8. Odłącz kod . Wyodrębnij metody z dużej funkcji. Zmień nazwy zmiennych. Interakcja z kodem wiele Cię o tym uczy, ponieważ nie czytasz go biernie.

  9. Współpracuj z innymi ludźmi . Współpraca z kolegami z zespołu przynosi inny punkt widzenia. Wyjaśnij im, czego się nauczyłeś, to pomoże ci połączyć kropki. Poza tym praca w grupie sprawia, że ​​jesteś mniej rozproszony, co jest bardzo pomocne w przypadku Legacy Code – duże bryły kodu spaghetti mogą naprawdę osłabiać motywację 🐌

Wnioski

Większość czasu spędzamy na pracy z Legacy Code. A jednak książek na ten temat jest niewiele.

Jedna z nich jest „Legacy Code Programmer’s ToolboxJonathana Boccara. Jeśli szukasz wskazówek i porad, jak dostać się do nieznanej bazy kodu, polecamy przeczytanie tej książki.

 

Leave a Comment