[ spezia @ 03.07.2011. 11:49 ] @
Imam sledeci problem. Inace junior sam, a voleo bih da mi seniori odgovore na ovo pitanje, iz svog bogatog iskustva.
Recimo uradim neki projekat pre par meseci. Ako mi neka logika treba u novom, ja se setim gde sam radio, pa lepo copy paste, i prepravim sta treba. Ovako ustedim na vremenu i produktivniji sam. Ali ako nesto ne radim 3-4 meseca, e onda je moje znanje slabo. Vratim se na projekat i setim se sta kako ide..
Sada kada dodje na red treci projekat ja uradim isto. Ali uhvatim sebe u neznaju. Recimo sednem za drugi komp , gde nemam ranije projekte. Ja brzo ne mogu da uradim, vec ce izgledati kao da radim prvi put.. Jer u programiranju ima dosta sitnica i fora.
Ja bih vise voleo da malo vise kucam iz glave, a za taj postupak sam malo lenjav, mozda malo vise, pa mi je laksi onaj copy paste.
Da li je ovo dobar nacin ucenja programiranja, ili pogresno se 'razvijam'.
Npr: uzmimo Wordpress i php. Ja znam neke funkcije napamet i to je ok. Ali kada radim sa komentarima, ili kako se kreiraju shortcode, ja opet odem na copy paste.Ovo je primer da ne ispadne da ne znam napamet da napisem echo, the_title() ili neku funkciju.... Da podsetim da neki editori dozvoljavaju prepoznavanje funkcija, pa ti sami ponude spisak sta si zeleo i ti izaberes. Problem je sto ja ne naucim za sledeci put, nego i dalje idem na foru 'izaberi'.
Znaci kako treba uciti programiranje ? Da li nesto sto je predjeno treba da bude nauceno i zapamceno da sledeci puta se tek malo nesto pogleda a ne sve i da vise radi copy/paste?
[ Shadowed @ 03.07.2011. 13:07 ] @
Pa, odgovoro je, po obicaju, negde izmedju. Trudi se da nacin resavanja problema smislis onda kada radis. A autocomplete mozes koristiti prilikom imlementacije tog nacina. Ako ne nadjes bolji nacin nego ranije, mozes i kopirati kod, sto da ne. A mozes i pisati ponovo, nekad upravo tada dobijes neku novu ideju. Dosta je individualno to.
Sto se tice pamcenja funkcija i sl. Bitno je da zapamtis cega ima, sami nazivi su manje bitni (nisu nebitni, samo manje bitni!). Evo primera recimo. U .NET-u imas kontrolu za prikazivanje tabela. U WinForms se zove DataGridView a u WPF-u DataGrid. Ja znam da oba imaju property koji im predstavlja objekat iz kojeg se podaci prikazuju. To je bitniji deo. Kako se zove u jednom a kako u drugom... Pa, bolje je ako znas, mozes odmah da napises, ali ako ne znas, iskopaces, bilo prepoznavanjem iz intellisense-a, bilo iz dokumentacije. Ali je najbitnije da znas cega imas, da kada pravis aplikaciju mozes da isplaniras kako treba.
[ Mihajlo Cvetanović @ 04.07.2011. 09:14 ] @
Copy-paste programiranje ima i loše strane. Zamisli da imaš neki kod, i onda u istom projektu treba ti slična funkcionalnost na nekom drugom mestu. Možda čak odmah ispod originalnog koda. Najlakše je copy-paste i malo ga prilagodiš. Ali šta ako kasnije (2 meseca ili 2 godine kasnije) dođeš do toga da taj kod ima grešku i mora da se menja? Promeniš ga na jednom mestu (na kom si uočio grešku), ali totalno zaboraviš da sličan kod imaš i na drugom mestu. I greška je ostala. To ne valja. Pravilo ponašanja prilikom programiranja je da konstantno uočavaš slične kodove i da težiš tome da ih presložiš u jedinstven kod koji se koristi na više mesta.
[ Shadowed @ 04.07.2011. 09:22 ] @
To je definitivno tacno. Ako je u istom projektu, nikako c/p. Ako je u razlicitim, moze donekle, ali ako se to pretvori u praksu bolje praviti komponentu koja ce se koristiti u razlicitim projektima.
[ X Files @ 04.07.2011. 09:25 ] @
U kontekstu goreopisanog problema, odrzavam jedan zaseban folder koga sam (bas originalno) nazvao Shared, u kome cuvam sve podsisteme koji mogu biti od koristi za vise namena i dodajlem ih u nove projekte po potrebi (Add to project), dakle NE kopiram kod, vec ga dovodim do nivoa new. Kada promenim/poboljšam taj zajednički deo koda, ostaje da prekompajliram projekte koji od tog zajedničkog dela koda zavise.
[ dejanet @ 04.07.2011. 09:58 ] @
Gadno je kada termin "code reuse", dodje do uva poslodavca, pa stigne nalog za pravljenje "all in one" firminog framework-a u smislu dostizanja "svetog grala u softverskoj industriji"..

..inheritance,composition i polymorphism sa pod-varijantantama, obicno dopadne negde na leto, kad kao nema mnogo posla..
[ deerbeer @ 04.07.2011. 10:20 ] @
Citat:
X Files: U kontekstu goreopisanog problema, odrzavam jedan zaseban folder koga sam (bas originalno) nazvao Shared, u kome cuvam sve podsisteme koji mogu biti od koristi za vise namena i dodajlem ih u nove projekte po potrebi (Add to project), dakle NE kopiram kod, vec ga dovodim do nivoa new. Kada promenim/poboljšam taj zajednički deo koda, ostaje da prekompajliram projekte koji od tog zajedničkog dela koda zavise.

+1

Citat:
dejanet: Gadno je kada termin "code reuse", dodje do uva poslodavca, pa stigne nalog za pravljenje "all in one" firminog framework-a u smislu dostizanja "svetog grala u softverskoj industriji"..

..inheritance,composition i polymorphism sa pod-varijantantama, obicno dopadne negde na leto, kad kao nema mnogo posla..

Meni nekad ovo dodje kao odmor od ponekad glupih i dosadnih projekata .
[ X Files @ 04.07.2011. 10:31 ] @
Zanimljive su i "tehnike" kako jedan C++ kod pisan na strukturalan/proceduralan način, pun globalnih/zajedničkih objekata/promenljivih, pretvoriti u OO kod, sa jasno definisanim granicama podsistema. Tj, kako naterati kompajler da "kaže" šta i gde fali... ali to je druga tema.

[ deerbeer @ 04.07.2011. 10:45 ] @
Ako su podsistemi napravljeni tako da su umrseni kao crevca pa kad inkludujes u drugi projekat onda krece kompajler da kuka za nedostajucim *.h fajlovima , libovima i drugim referencama .
Ako to postane patnja sledeci stepenik su pravljenje static libova ili pak dll-ova .Inace kad je stvar dodavanja prilicno pravolinijska dodajem h i cpp fajlove kao klase .
[ dragancesu @ 05.07.2011. 10:34 ] @
Osnovno je da razumes to sto radis, dalje ide samo

Verovali ili ne, pre sad vec dosta godina kad se pojavio visual basic, otprilike verzija 2 ili 3, jedan drugar koji nije imao pojma o programiranju, nema pojma engleski jer je ucio ruski, itd i za koga nikad ne bi rekli da ce napisati program jednom donese nesto i poce da pokazuje. Dosta je lepo izgledalo i imao je neke fine funkcije. Kad sam ga pitao kako je to uradio samo je rekao "nemam pojma, video sam primer u tutorijalu, uradio sam cut-paste..." Ostao sam bez teksta. Pokusavao je jos ponesto da napravi ali programiranje nije naucio, njegova prica je lupetanje...
[ wex-alpha @ 23.07.2011. 21:40 ] @
Kao sto Shadowed rece u vezi datagrid datagridview-a. Nije bitno kako se zove, bitno je da znas otprilike sta je unutra i kako ga koristiti.

Ja dosta cesto radim c/v, ali velikom vecinom svoj vlastiti kod, iz jednog u drugi projekat (uz potrebne dorade).

Ja dan danas sintaticki ne znam napisati deklaraciju nove liste. Uvijek zaboravim nesto... nevjerovatno :)

Code:

List<string> nesto = new List<string>();