[ tolemarko @ 07.07.2009. 12:19 ] @
Prvi put sam dobio veliki .NET projekt za razvoj, a kojeg sam naslijedio od svog kolege. Dokumentacija ne postoji, tj. radi se o inline dokumentaciji odnosno komentarima unutar svakog fajla. Projekt je podijeljen na podprojekte sa gomilom klasa (citaj fajlova). Sve u svemu ima oko 100 klasa iliti oko 20000 linija koda.

Mozete li mi dati neke tips&tricks o tome kako se brzo snaci u jednom ovakvom projektu? Na koji nacin se vi snalazite: da li idete od fajla do fajla i tumacite kod ili npr. trazite samo evente? Na koji nacin pretrazujete projekt? Evo vec 7 dana pokusavam ici od fajla do fajla, ali to ide veoma sporo i nakon 5 sati vise ne mogu ni razmislajti.

Nadam se da ovo nije previse pitanja te se nadam da cete mi moci pomoci korisnim savjetima jer vjerujem da ste i vi u pocetku bili na mom mjestu.

Hvala svima unaprijed
[ tolemarko @ 07.07.2009. 14:38 ] @
Zaboravih reci da trenutno koristim opciju Find in Files te preko nje trazim evente i delegate pa se nadam da postoji mozda neki brzi nacin. Takodjer koristim Object Browser da se upoznam sa namespaceovima, klasama, te dijelovima klasa.
[ bags @ 07.07.2009. 15:06 ] @
Tako nesto doceka svakog od nas kad tad, a samo mi sami uvek pisemo dokumentaciju. ;)

Elem, ja se najvise sluzim sa debagerom. Postavljam breakpointe i onda pokusavam izvrsiti neke od tipicnih radnji.
Na taj nacin uocim koje su osnovne klase i dalje je manje vise lako. Ne moras odmah znati napamet strukturu svih klasa odjednom.

Ako imas srece, mozda ti je kolega koristio neki source managment sistem (SVC, SVN, Git), pa mozes pogledati logove i videti, kako se projekat razvijao.

Ps.
Umesto find in files imas na desniom kliku Go to Definition. :)





[ tolemarko @ 07.07.2009. 15:36 ] @
Citat:
bags
Elem, ja se najvise sluzim sa debagerom. Postavljam breakpointe i onda pokusavam izvrsiti neke od tipicnih radnji.
Na taj nacin uocim koje su osnovne klase i dalje je manje vise lako. Ne moras odmah znati napamet strukturu svih klasa odjednom.

to su i meni rekli da postavljam break pointe. ali kako znas gdje ces ih postaviti? mora biti neka metodologija ili kljucna rijec koju trazis u kodu da bi nasao zanimljivu funkciju na koju ces postaviti breakpoint. sto konkretno trazis u tom nekom kodu? evente?

Citat:
bags
Umesto find in files imas na desniom kliku Go to Definition.

to sam prvo i radio i onda se nadjem sa 20 otvorenih fajlova bez glave i repa
[ bags @ 07.07.2009. 15:53 ] @
Sto se tice breakpointa, jednostavno izaberem neki nazovima ga "scenario" u aplikaciji (npr. stampanje izvestaja) i onda pokusavam pratiti kroz kod sta se desava.E kad se pocnem gubiti, pocnem postavljati breakpointe tacno tu gde se gubim. :)

Kada prodjes sve "scenarije" upoznaces i citav sistem. Naravno za to je potrebno izvesno vreme. U svakom slucaju, kao sto si sam primetio, ako ides kroz fajlove i sekvencijalno citas kod neces daleko dogurati. :)

Ako je je hijerarhija komplikovana mozes desnim klikom dobiti class dijagram.




[ Sapphire @ 07.07.2009. 17:44 ] @
Ne znam šta radiš s projektom, ali znam da dvije stvari mogu pomoći: refactoring uz pomoć postavljenih testova (TDD), i ponajbolji plugin za VS: Resharper.

Za prvo, pogledaj link
[ tolemarko @ 09.07.2009. 13:03 ] @
Citat:
bags

Ako je je hijerarhija komplikovana mozes desnim klikom dobiti class dijagram.

Uf, breakpointi mi skratise zivot za 10 godina . Pokusao sam na tvoj nacin preko brakpointa, ali cini se da mi bolje ide preko Class Diagram-a, barem za sada dok jos ne kuzim koja klasa je naslijedila sto te njene derivate. Vjerujem da ce mi kasnije breakpointi biti korisniji.
Citat:
Sapphire: Ne znam šta radiš s projektom, ali znam da dvije stvari mogu pomoći: refactoring uz pomoć postavljenih testova (TDD), i ponajbolji plugin za VS: Resharper.
Za prvo, pogledaj link

ReSharper koristim jos od fakultetskih dana, ali samo kao pomoc pri kodiranju (u cemu mu nema premca, ako izuzmemo zauzece memorije). Mozes li mi malo detaljnije pojasniti kako da ga koristim pri istrazivanju projekta? Ili ako je muka pisati da me uputis do nekih dobrih tekstova ili da mi barem kazes koje kljucne rijeci da trazim po netu.

Hvala svima na pomoci
[ Sapphire @ 09.07.2009. 23:52 ] @
ReSharper sam spomenuo radi druge stvari: rada na projektu, i pod ovim mislim na feature kao što se safe-delete, raznorazne refactor funkcije itd... Nezaobilazno je da ćeš neki dio koda morati mjenjati. Što se tiče navigacije po samom projektu, definitivno najveća pomoć ti je ubrzavanje samog procesa navigacije - ReSharper ovdje dolazi u pomoć na sve moguće načine: ili uvođenjem puno smislenijih shortcut-a na najkorištenije VS opcije, ili uvođenjem potpuno novih navigacionih mogućnosti...

Za tutorial, pogledaj The 31 Days of ReSharper, iako vjerovatno i sam znaš većinu ovih stvari. Day 11 je o code navigation-u ...

P.S. nemoj olako odbacivati ovu ideju sa brakepoint-ovim, meni se čini kao veoma korisna! Neke stvari ćeš najbolje zapamtiti ako budeš ručno išao korak po korak. Btw, kao što je rečeno, brakepoint-ove koristi za istraživanje algoritama operacija, a ne za hijerarhiju klasa.

Pozdrav!
[ deerbeer @ 10.07.2009. 08:14 ] @
Citat:

to su i meni rekli da postavljam break pointe. ali kako znas gdje ces ih postaviti

Pa pocnes od main f-ije ..
Pronadjes sve prozore i dijaloge koji se otvatraju pri startupu i njihove klase (konstruktor, FormLoad )
onda pronadjes sve evente za npr. button-click komande na toj formi, i postavi breakpoint.
Korisit CallStack prozor u VS-u da vidis redosled pozivanja f-ija i tok programa ,
zajedno sa Find in Files & Go-to-Definition opcijama.
Kad se izgubis, skiciraj negde model klasa ,
veze izmedju objekta i redosled f-ija koje se pozivaju
sto si uocio prethodnim debagovanjem.
I najvaznije ne odustaj lako ... potrajace ...