Przeniesienie "trudnego" kodu do nowej aplikacji

0

Dobry wieczór :)
Chciałbym spytać o radę, jak dobrze podjeść / czy są jakieś narzędzia pomocne w przenoszeniu "dość ciężkiego" kodu do nowej aplikacji. Sytuacja wygląda tak: Aplikacja 'dawca' jest napisana w C# WinForms. Jest to aplikacja sterująca pewnym urządzeniem po serialporcie, problem w tym, że protokół komunikacji jest napisany w sposób praktycznie uniemożliwiający zrozumienie, co dana funkcja robi i skąd wzięły się takie wartości, a nie inne. Protokół to między innymi klasa z kilkudziesięcioma metodami o takiej samej nazwie i liczbą na końcu(liczba oznacza typ danej jaka jest wysyłana/odbierana). Metody pobierają dane w sposób lekko mówiąc nie ułatwiający sprawy :/ tzn. odwołanie do propercji innej klasy w której dane z kolejnej propercji(a ta jest zależna od jeszcze kolejnych o.O) są przeliczane w sposób, który zupełnie nic nie mówi(jakieś dzielenia, mnożenia, ify, etc - nie wiadomo dlaczego właśnie takie liczby i operacje), do tego te kolejne odwołania jeszcze pogarszają sprawę, gdyż po którymś przeskoku po getterach/setterach(w prawie każdym jest jakaś modyfikacja wartości) dochodzi do porównania wartości wpisanej z jakimiś wpisanymi w ustawienia widoku(?) stałymi(Settings.Designer.cs) :| Wszelkie nazwy przechodzone po drodze mają nazwy które niewiele mówią.
Nowa aplikacja jest pisana też w C#, ale WPF, stosujemy wzorzec MVVM, ViewModele wydzieliliśmy do osobnej biblioteki(PCL), gdyż planujemy zrobić później appke mobilną i ten nieszczęsny protokół też próbujemy wydzielić do osobnej biblioteki, gdyż napisanie go od nowa jest problematyczne ze względu na brak jakiejkolwiek dokumentacji. Implementacje samej komunikacji są już per-platforma, a protokół ma odpowiadać za zmianę pakietów na dane i z powrotem.

Po tym bardzo długim wstępie pytanie:
Czy są jakieś narzędzie które byłyby wstanie wyciągnąć wszystkie zależności stojące za daną zmienną? Macie może jakieś sprytne metody na radzenie sobie z takimi przypadkami?

PS
Jeśli nieodpowiedni dział forum, to przepraszam :)

0

Sugerowałbym zacząć od Shift + F12 w ReSharperze.

1

Przy przenoszeniu takiego kodu warto zrobić sobie logowanie jego użycia. W każdej funkcji wywołujesz zapisanie gdzieś do pliku:

  • nazwy metody,
  • parametrów wejściowych,
  • co uzyskano na wyjściu.

Dzięki temu możesz odkryć, że połowa kodu jest nieużywana i nie trzeba jej przenosić. Może to też pomóc w zrozumieniu, co dana funkcja robi (czasem dokumentacja i kod nic nie mówią, ale analiza wejścia/wyjścia sprawia, że wszystko staje się jasne).

0

Aurel jak zwykle - cenna rada kobiety :D
Od tego jest ReSharper, który w kilka minut pokaże jaki kod jest niewykorzystany. Nie mówiąc już o mapie połączeń o której zresztą w niejasny sposób wspomniał somekind.

Ogólnie ReSharper jest wyjściem z Twojego problemu autorze.

0

Od tego jest ReSharper, który w kilka minut pokaże jaki kod jest niewykorzystany. Nie mówiąc już o mapie połączeń o której zresztą w niejasny sposób wspomniał somekind.

Ha, może i racja :D Założyłam, że kod może być wołany przez inne systemy i możemy nie wiedzieć które... Z niezłym bajzlem miałam ostatnio do czynienia ;)

Ale Resharper ci wejścia/wyjścia nie pokaże...

0

@Krzywy Samiec no nie wiem, ja bym aż tak na tym nie polegał. Są przecież frameworki które używają pewnych rzeczy w runtime i z punktu widzenia kodu coś może się wydawać nieużywane, podczas gdy nie jest to wcale prawda.

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