» »

C# Kako naj se lotim tuje kode

C# Kako naj se lotim tuje kode

barakus ::

Pozdravljeni,

Za počitniško delo sem dobil za popravljat neko napisano aplikacijo.
Koda je velika, mislim da je več C# projektov skupaj povezanih.

V Visual Studiu in C# sem nov in še nikoli nisem popravljal tuje kode, katera bi bila prevelika za jo v celoti prebrat oz. razumet, zato me zanima, če imate kakšen nasvet, kako naj se sploh lotim razumevanja aplikacije. Imam ogromno .cs fajlov, ki se med seboj kličejo. Kako naj dobim neko osnovno razumevanje kako aplikacija deluje?

Potem pa me še zanima kakšne so tehnike, za iskanje v aplikaciji samo delov kode, ki me zanimajo, npr. da bi rad našel kodo, ki je odgovorna za neko obnašanje v aplikaciji, brez da bi celo aplikacijo preštudiral, ker je ogromna.

Se opravičujem za tako abstraktna vprašanja, mogoče bo kak dober nasvet vseeno padel.

root987 ::

Začni na začetku izvrševanja in sledi niti v smeri kode, ki bi jo rad popravil. Vsekakor pa si pomagaj s skiciranjem workflowa - osebno naredim to kar na papir - da dobiš boljši občutek kako le-ta poteka in kdaj se kaj izvrši.

Vsekakor pa močno pomaga, če ti tisti, ki je to kodo prvotno pisal/z njo že delal pomaga, saj je sicer pain in the ass - še posebej pa, če za povrh vsega koda ni niti dokumentirana (kar bi sicer morala biti zahteva pri vsakem projektu).
"Myths which are believed in tend to become true."
--- George Orwell

barakus ::

Saj poskušam sledit pa je tako kompleksno, da se vmes zgubim, ker klici skačejo zelo globoko. Bom si poskušal nekako narisat po delih, drugače pa pišem ker se že nekaj dni ukvarjam samo z rzumevanjem, pa še vedno nisem daleč prišel in me skrbi.

Iluvatar ::

Visual studio ima dobro stvar, ki izdela t.i. class diagram, tega potem priloži projektu, kot novi file. Tam je grafična predstavitev vseh razredov, njihovih metod in lastnosti. V vs 2010 ultimate izdaji, pa je na voljo architectual explorer, ta dela še večje čudeže. Naš paradni konj ima 15 projektov od tega so trije setupi. So pa zadeve lepo razslojene. Npr. DB nivo, BUS nivo, servisi, UI nivo. Znotraj tega pa še potem bolj podrobno...

japol ::

Kot miselni vzorec, vsak .cs, je s črto povezan z drugim,... recimo v ms visio

Damiani ::

Dobro se pozanimaj kako aplikacija deluje, kako uporabniki z njo delajo. Tako ti bo malo bolj jasno kaj pravzaprav je ta stvor. Če v kodi ni zadostna količina komentarjev, ti priporočam da jih sam dopisuješ. Verjetno boš porabil še par dni, preden boš napisal prvo vrstico programske kode.
A maš že kej praktične programerske kilometrine? Pri tem ne mislim programiranje v šoli.
Jest osebno sem dobil v popravljanje nedokumentirano aplikacijo, brez komentarjev kode, brez vednosti kaj pravzaprav aplikacija dela,... Koda je pisana na vseh možnih krajih (pač programer se je na njej učil programirat). Šmoren od šmorna, da pa je zaplet še večji je aplikacija pisana v romunščini (skrajšana imena funkcij, polja, labele, komentarjev pa sploh ni). V tem primeru pač krpam luknje in po strankinih željah dopolnjujem.
Je pa ta način dela bolj kot ne limanje velikih ran z majhnimi obliži.

barakus ::

Nimam kilometrine na realnih aplikacijah (ki so kompleksnejše), poleg tega se zamotim z marsikaterim detajlom, ker vsaka tretja stvar je nekaj novega in grem googlat kaj je to potem pa je včasih zelo kompleksno pa nekako preskočim, ker bi cel dan samo tisto lahko bral, pač ogromno novih stvari pa ne vem kam se fokusirat, ker se bojim, da če nekaj izpustim, da ne bom dojel celostne slike delovanja.

P.S.
Hvala za idejo o diagramu, bom sprobal ta Class Designer

Zgodovina sprememb…

  • spremenil: barakus ()

hendriks ::

Kot ti je že Damiani lepo svetoval se najprej nauči dela z aplikacijo, lahko tudi v
virtualki, če se bojiš da bi kaj zjebal. Potem pa breakpointe v kodo in gasa in si delaj
sled in diagrame, spremljaj vrednosti kakšnih spremenljivk ipd. Je pa to delo mukotrpno,
priznam, saj ima vsak svoj način kodiranja, poimenovanja spremenljivk ipd. Hvala bogu,
da imajo resne firme standarde kodiranja, ki zadevo olajšajo (sam recimo uporabljam IDesign standard).

darkolord ::

Čisto odvisno, kaj je tvoj cilj s to aplikacijo.

Če boš popravljal malenkosti tu pa tam, lahko malo "pogoljufaš" na načine, ki so že omenjeni zgoraj. Če boš na tem projektu delal dolgo časa oz. kakšne bolj korenite spremembe, je edini pravi način to, da vse prebereš in razumeš - sicer bi moral to delati vsakič sproti, ko bi hotel kaj popraviti in bi na koncu porabil precej več časa.

Zgodovina sprememb…

  • spremenilo: darkolord ()

detroit ::

kot ti je root svetoval, paper and pencil. Drugače pa sm že mal pozabil kako je s class diagrami, mogoče bi pogledal kaj v teji smeri


oops je že en napisal isto,sry nism bral
Skero

Zgodovina sprememb…

  • spremenil: detroit ()

Iluvatar ::

Drugače pa tudi ne bo nič narobe, če boš vprašal programerje, ki delajo s to kodo kaj je kaj in kako je zasnovano. Najboljše da si pripraviš vprašanja, uskladite termin in grete skozi vse. Nikoli ni nič narobe, če nekdo nekaj vpraša, nastane pa problem, ko nekdo nekaj "predolgo" dela, ker ne razume vendar ničesar ne vpraša...

dolenc ::

Pa z debugerjem se sprehodi, da vidiš v kere klase ali funkcije te meče, vmes pa skiciraj potek

barakus ::

Ma z debuggerjem mam tudi tezave, ce sem prevec casa na enem breakpointu me kar nekam totalno drugam vrze ko stisnem f10. Sklepam da je to nekaj s threadi, ker jih je tu malo morje.

Drugače pa hvala za nasvete, moja skrb je točno ta, da ne bi predolgo delal v resnici pa nič razumel, prašat nimam nikogar ker se noben ni s to aplikacijo ukvarjal. Sem rekel da zelo pocasi napredujem da komaj malo razumem delcke logike pa sem dobu odgovor da ce ne bom jst bo itak moral nekdo drug tocno tko kot jaz delam.

Damiani ::

Vprašaš lahko izkušenega .net programerja, če je kakšen poleg. Popravljanje tujih aplikacij je veliko lažje če dobro poznaš tehnologijo in imaš programersko kilometrino. Tak osebek ti lahko pokaže fore v .netu, debugerju, poleg tega zaradi izkušenj hitro sledi kodi.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[UWP] [C#]

Oddelek: Programiranje
424130 (2160) BivšiUser2
»

Kdo je "dober" programer?

Oddelek: Programiranje
484932 (3524) kunigunda
»

Kako ugotoviti, če si dober (strani: 1 2 )

Oddelek: Programiranje
8116989 (14039) Red_Mamba
»

PHP in objektno programiranje (strani: 1 2 )

Oddelek: Programiranje
8511870 (10337) kivi113
»

ASP.NET(jezik C#) vs. PHP (strani: 1 2 )

Oddelek: Programiranje
7710569 (9213) Nerdor

Več podobnih tem