Analiza nowego kodu - jak zacząć

0

Cześć,

jestem ciekawy jak Wy podchodzicie do następującego problemu:
Muszę zintegrować pewien framework do modułu, który niedawno dostałem. Co ważne - nie mam możliwości porozmawiania ani z autorem, ani z nikim innym odpowiedzialnym za tę apkę.
Oczywiście terminy gonią, ja muszę z aplikacji wyciąć część i doimplementować wspomniany framework.

Ciekaw jestem Waszych sposobów na analizę nowego kodu, który dostajecie. Może macie jakąś strategie w podejściu do takich rzeczy?

Pozdrowienia

6

najpierw czytam dokumentację,
jak dokumentacji nie ma, to znak że trzeba sobie zrobić kakao,
dalej jak się da to staram się wygenerować automatycznie jakieś diagramy,
jak kakao nie pomogło, to pozostaje długopis + kartka papieru i czytanie kodu :)

0
neves napisał(a):

najpierw czytam dokumentację,
jak dokumentacji nie ma, to znak że trzeba sobie zrobić kakao,
dalej jak się da to staram się wygenerować automatycznie jakieś diagramy,
jak kakao nie pomogło, to pozostaje długopis + kartka papieru i czytanie kodu :)

Mówiąc o diagramach masz na myśli diagramy klas, czy jeszcze jakieś inne?
To może tu tkwi mój błąd... ja piję herbatę zamiast kakao :D

0
Brunatalny napisał(a):

Mówiąc o diagramach masz na myśli diagramy klas, czy jeszcze jakieś inne?

Takie jakie masz do dyspozycji, ja używam tych dostępnych w visual studio, bo umożliwiają płynne/interaktywne przechodzenie od szczegółu do ogółu(różne poziomy abstrakcji):
Map dependencies with code maps

3

Ja trochę inaczej. Na początku staram się znaleźć jakieś wejscie do systemu (czyli miejsce gdzie zaczyna działać kod bo wykonaniu jakiejś akcji, np kontrolery), ustawiam tam breakpointa i odpalam. Następnie przelatuje kilka scenariuszy krok po kroku, żeby zobaczyć jak wygląda 'flow' programu.

0

Muszę zintegrować pewien framework do modułu, który niedawno dostałem.

Po co??? W sensie - nie wiem, w jaki sposób jest zdefiniowany dokładnie task, ale jakbym dostał zadanie "zintegrować framework do modułu" to zaraz potem by ten task wrócił do autora z prośbą o wyjaśnienia co trzeba dokładnie zrobić, jaki jest prawdziwy cel tego zadania. Bo inaczej zagrzebiesz się w czymś i nawet nie będziesz wiedział, co masz robić. "integracja" to słowo-wytrych, które zwykle gó*no znaczy bez szerszego kontekstu.

A na końcu i tak może się zdarzyć, że "integracja" była niepotrzebna (niepotrzebna albo od strony biznesowej, albo od strony implementacji - czasami lepiej jest zostawić coś, jak jest, ew. przepisać całkowicie od nowa niż "integrować" na siłę).

Muszę zintegrować pewien framework do modułu

Jeśli jednak ustaliłeś co to znaczy "zintegrować" i ustaliłeś, że faktycznie jest to potrzebne - to dobrze jest zacząć hakować rozwiązanie byle jak, małymi krokami (czyli "integracja" kawałkami), bo dzięki temu zaczynasz widzieć jak działa cały system w praktyce. Jak zahakujesz coś byle jak, to zawsze możesz jeszcze raz to zrobić, tylko ładniej.

Tzn. kodując jesteś wtedy takim odkrywcą, który nie ma pojecia co się stanie, ale który próbuje różnych metod na zbadanie systemu (wliczając w to choćby debugowanie, albo pisanie "dupa dupa" w randomowych miejscach).

Analiza nowego kodu - jak zacząć

Jaki język? Istnieją różne narzędzia do analizy kodu, chociaż do niektórych języków łatwiej je można znaleźć niż do drugich. A jeśli nie znajdziesz, to niestety czeka cię czytanie kodu albo/oraz żmudne debugowanie.

2

Nie czytam dokumentacji.

Każe sobie pokazać jak działa.
Staram sie zbudować.
Sprawdzam jirę i najczęstsze błędy.
Sprawdzam historie zmian i szukam gorących miejsc.
Odpalam metryki.
Odpalam debug.
Raz bawiłem się w to:

https://m.youtube.com/watch?v=cLPaFfQmvcA
Statam się zrobić jedno, małe zadanie rozpoznawczo-testowe, najlepiej bugfix.

Potem na ogół:

  • wiem o co pytać(jeśli mam kogo pytać),
  • znam faktor grozy kodu do szacowania zadań.

Dużo rzeczy, ale w zasadzie chodzi, żeby wyłuskać najwieksze smrody i je dokładniej obejrzeć. Całość w zależności od projektu zajmuje mi kilka dni. Max 2 tygodnie, nigdy więcej nie dostałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1