Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Refaktoring prevelike klase

[es] :: .NET :: Refaktoring prevelike klase

[ Pregleda: 2078 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bobby63
Nis

Član broj: 11398
Poruke: 180
*.dynamic.sbb.rs.



Profil

icon Refaktoring prevelike klase29.08.2011. u 00:18 - pre 153 meseci
Pozz svima.

Program na kome radim vec 6 godina je postao previse komplikovan. Meni to i ne smeta ali je VS2010 editor postao previse spor jer glavna klasa ima preko 30.000 linija.
Pretpostavljam da bi dosta pomoglo da delove programa izdvojim u nove klase ali je problem sto ta klasa ima hiljade varijabli koje su deklarisane kao private i bio bi preveliki posao da to sve rucno preradjujem a i solidna verovatnoca da se provuce neki novi bug.

Pitanje je postoji li neki alat koji bi izdvojio subrutinu u novu klasu i automatski prebacio upotrebljene varijable u public ili tako nesto?

Program je Net 2.0 Visual Basic, VS 2010.

Unapred hvala.
Hear all, trust nothing!
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Refaktoring prevelike klase29.08.2011. u 12:29 - pre 153 meseci
Klasa od 30000 linija je monstruozna. A ni plan refaktoringa ti nije bas najjaci, nista ti nisi postigao tim pristupom sem sto si podelio 30000 linija u vise fajlova, ako je samo do toga tu su parcijalne klase pa mozes svaki metod u poseban fajl da stavis bez ikakve izmene. To medjutim ne resava fundamentalni problem tvoje ogromne klase. Treba da sednes i da klasu podelis po funkcionalnosti, da sve podfunkcionalnosti koje se koriste enkapsuliras u posebne nezavisne klase.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9446
89.216.32.*



+10242 Profil

icon Re: Refaktoring prevelike klase29.08.2011. u 12:57 - pre 153 meseci
30.000 redova ??? Hiljade private varijabli ? 6 godina si kažeš ti pisao i pisao ... I sad se snalaziš sasvim OK, samo je editor nešto spor ?!
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.static.isp.telekom.rs.



+3 Profil

icon Re: Refaktoring prevelike klase29.08.2011. u 13:20 - pre 153 meseci
Ako ti do sada nije bio problem da se snalaziš u tom kodu možda bi najbolje bilo da batališ refactoring i uzmeš jaču mašinu, tako da ti editor ne koči ... :P
Ionako će ti trebati ko zna koliko vremena da sve to središ i još ćeš uvesti ko zna koliko bug-ova u program.
Owl
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
*.dynamic.isp.telekom.rs.



+987 Profil

icon Re: Refaktoring prevelike klase29.08.2011. u 16:58 - pre 153 meseci
Trebalo bi da sednes i procitas sledecu knjigu

http://www.cet.rs/cetknjige/KDetaljno.aspx?ID=3323

Citat:

Refaktorisanje - Poboljšanje dizajna postojećeg koda

Ova knjiga je vodič za refaktorisanje. Napisana je za profesionalne programere, s ciljem da se pokaže kako se refaktorisanje može obavljati kontrolisano i efikasno.
Početak knjige je posvećen primeru - umesto opšte priče, uzet je mali program sa uobičajenim propustima u projektu, a zatim se taj program refaktoriše u prihvatljivi objektno orijentisani program.
Dalje slede opšti principi refaktorisanja, razne definicije, kao i razlozi za obavljanje refaktorisanja.
Jedno poglavlje je posvećeno testiranju koda, koje igra veoma važnu ulogu u refaktorisanju.
Srž knjige svakako čini katalog refaktorisanja; njemu su posvećena poglavlja od 5. do 12.
Ovaj katalog svakako nije sveobuhvatan, ali jeste začetak jednog obimnog kataloga.



S obzirom da ti je klasa preko 30.000 linija onda ces pronaci gomilu gomilu koda koji sablonski mozes da refaktorises.

Takodje ne bi bilo lose da instaliras ReSharper extenziju za VS i sredis kod pa tek onda da refaktorises. Po mom iskustvu fajl sa 30.000 linija ima jako puno lose napisanog koda...
 
Odgovor na temu

bobby63
Nis

Član broj: 11398
Poruke: 180
*.dynamic.sbb.rs.



Profil

icon Re: Refaktoring prevelike klase02.09.2011. u 14:15 - pre 153 meseci
Avaj vidim da mi ne gine stajanje u cosku, izvlacenje usiju a i poneka cuska.
E da, i klecanje na kukuruzu ako se neko jos seca takvih pedagoskih metoda.

Prica ide ovako. Narucilac posla nije covek od papira, svi dogovori idu usmeno. Kada treba da se ubaci nesto novo, uglavnom jer novi kupac hoce nesto sto nije implementirano u programu to obicno mora da se zavrsi za max nedelju dana.
Kad sam poceo da radim program (industriski, specificne namene, prodaje se sa sve kompjuterom i custom hardwareom) nisam imao jasnu predstavu sta treba program da radi. Program radi u mrezi, ima detaljnu bazu svega sto se desava, uspostavlja interface sa mosom razlicitih externih skalamerija.
Prva verzija je usla u prodaju posle otprilike 6 meseca a od tada se program stalno prosiruje i upgrejduje, dodaju se podrske za novi hardware, unapredjuje se interface.
Program radi pouzdano i brzo, musterije su zadovoljne a za sada se prodaje u 5-6 drzava. Gazdama je zaradio velike pare, nazalost ne i meni mada ne mogu mnogo da se zalim jer od njega imam solidan mesecni prihod a ne radim na njemu vise tako mnogo.
Varijabli ima puno jer toliko i treba da ih bude i tu nema mnogo pomoci.

Sada kada jasno znam sta prog treba da radi savrseno mi je jasno da je brdo stvari moglo mnogo bolje da se napise. Pre godinu dve sam pokusao da pocnem da pisem sve od pocetka ali se ispostavilo da je to preveliki posao pa sam digo ruke posle mesec dva.

Pored ovog imam jos masu komercijalnih programa i sve su musterije zadovoljne. Npr. moj program uz pomoc kamera kontrolise izradu tablica za kola (zavod za izradu novcanica) i evo posle godinu ipo jos se nijednom nisu bunili da nesto ne radi kako treba. Takodje sam radio, za strane narucioce, na vise 3d igara. Upravo sam zavrsio jednu 3d XNA igru za win phone 7 i evo citata iz maila koji mi je poslala firma koja je narucila poso.
"The code looked clean, I am impressed by the skills of your team."
Takodje od iste firme imam avans za jos dve igre.

Hocu da kazem, rado bih napisao ovo kako treba, ali avaj, jednostavno nije moguce zbog velicine aplikacije a i niko to ne bi platio jer program i ovakav kakav jeste radi super.

@mmix
Hvala puno, parcijalne klase su znacajno ubrzale editor, manje vise mogu da kazem da radi prihvatljivo.

@_owl_
:) svidja mi se ideja, vec jurim poslodavca da iskamcim jak kompjuter.

@Java Beograd
Avaj program radi masu komplikovanih poslova a jest cinjenica da se super snalazim u njemu. Licno mi je lakse da skrolujem gore dole nego da se setam kroz 100-tine klasa koliko bi ovaj program trebao da ima. Ostali programi koje sam pisao znajuci sta treba da radim idu do 2000 linija u klasi.

@Igor Gajic
Hvala puno, nisam ni znao da postoji knjiga koja se bavi samo refaktoringom, bacicu pogled u svakom slucaju kada bude vremena
Hear all, trust nothing!
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.dynamic.sbb.rs.



+395 Profil

icon Re: Refaktoring prevelike klase02.09.2011. u 14:43 - pre 153 meseci
Citat:

Licno mi je lakse da skrolujem gore dole nego da se setam kroz 100-tine klasa koliko bi ovaj program trebao da ima.

A sad ti editor na svaki skrol oduzme par sekundi





Viva lollapalooza
 
Odgovor na temu

Nothingman

Član broj: 31375
Poruke: 308
*.teol.net.



+112 Profil

icon Re: Refaktoring prevelike klase06.09.2011. u 11:37 - pre 152 meseci
Zao mi je coveka koji te nekad bude nasledio u odrzavanju te klase :D

Procitaj ovu knjigu od Fowlera sto ti je Igor preporucio, nije velika, a zatim refaktorisi taj kod za opste dobro :) U sustini, ako nemas vremena, mozes da procitas samo prvih 100 strana, a ostatak knjige koristi kao referencu kako ti sta zatreba.
Q: Are there really any systems where
void main() doesn't work?
A: It has been reported that programs using void main() can crash.
Q: The book I've been using, _C Programing for the Compleat Idiot_,
always uses void main().
A: Perhaps its author counts himself among the target audience.
 
Odgovor na temu

[es] :: .NET :: Refaktoring prevelike klase

[ Pregleda: 2078 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.