A Javascript ébresztő számomra
Manapság elég érdekes dolgokat csináltam ,ami főleg annak köszönhető ,hogy elkezdtem írni ezt a blogot és megfogadtam a saját tanácsomat és elkezdtem tesztelgetni különböző dolgokat.
Egyik nap miközben egyetemen unatkoztam és olvastam redditet megakadt a szemem egy jó tanácson egyik JS cikknél.Az volt benne ,hogy használjunk ()(function(){kód})-féle kód szerkezetet ,amivel meg tudjuk akadályozni ,hogy beszennyezzük a globális névteret.
A globális névtér azt jelenti ,hogy ez a legkülső blokk ,amiben az alap típusok és objektumok vannak és a program(vagy programfájl) egészére kiterjed. Javascript esetében ezzel azért van gond ,mert ha szokványosan csinálunk függvényeket ,akkor azok a globális névtérbe kerülnek és ha úgy használnánk a JS-t mint régen ,akkor az összes függvényünket egyszerűen leírnánk egymás alá ,viszont ha így tennénk ,akkor név ütközés állhatna elő vagyis ,hogy két függvénynek ugyanaz lenne a neve.
De egyébként is előállhat név ütközés ,ha nem figyelünk az elnevezésekre.
Eddig ezzel nem foglalkoztam ,mivel végül is ügyelek arra ,hogy elnevezéseim ne ütközzenek , na meg nem is dolgozok nagy projekteken ,viszont ha valami nagy dolgon dolgoznék akkor ez gond lehetne. Ekkor gondoltam ránézzek egy cikkre ,úgy is akkor annyi időm volt mint a tenger(2 óra).
Miután kedvem volt kicsit tesztelgetni ezért cloud9 -ben ki is próbáltam néhányat és rádöbbentem ,hogy eddig teljesen rosszul használtam az OOP(Objektum Orientált Paradigmát) ,mivel régebben ,amikor nagy sietségben tanultam a Javascriptet ,néhány dolog felett elsuhantam ,ahogy azt kell.
Már eddig is éreztem ,hogy a kódolási stílusom elég rossz ,mivel nélkülözte az egyik legfontosabb OOP alapelvet ,az egységbezárást. Az egységbezárás azt jelenti ,hogy egy objektum egyes változóit és metódusait ne lehessen közvetlenül elérni ,mert az rossz gyakorlathoz visz el minket.
Ma értettem meg ,hogy mit értett Douglas Crockford azon ,hogy javascript a világ legjobban félreértett nyelve .(Mondhatnám inkább ,hogy a legjobban félre érthető) Mostanság úgy voltam vele ,hogy elegem volt a JS-ből ,mert túlságosan sok idegesítő dolog volt benne .erre úgy látszik ,hogy csak az volt a gond ,hogy nem értettem elégé a nyelvet. Habár még mindig nem a szívem csücske a JS.
Na mindegy, keresgélés közben aztán rábukkantam erre . Ezek példák sorozata haladó javascripthez. Nagyon jó gyűjtemény habár nem meglepő ,mivel a Secrets of the JavaScript Ninja írója csinálta John Resig ,akinek a könyve is alapművé vált a JS közösségben. Lehet ezek után el is olvasom a könyvét ,mert nagyon jó példákat hozz. Aki szeret egyszerű ,de mégis jó példa kódot olvasni ,annak ajánlom a fenti linket.
Tanulóknak nem kell aggódni ,mert megnéztem és codeacademy-n és ott jól van ez megtanítva , főleg ,hogy az oldal megújult és tutorialok-ból is mintha már több lenne(Javult a minőség). Akit érdekel annak elmondom ,hogy van különbség a CodeAcademy-s és ()(function(){}) között ,ezért inkább azt mondom ,hogy a CodeAcademy-s érdemes használni.
Inkább le se írom ,hogy hogyan kódoltam ,de azt elárulom ,hogy a prototype fogalmát elégé félre ismertem és még jó néhány más dolgot. -_-
Ezekbe a hibákba is azért estem bele ,mivel nem teszteltem és nem kíváncsiskodtam eleget annak idején. Szóval ebből is levonható az a tanulság ,hogy az ember képes ugyanazokat a hibákat elkövetni többször :D
Egyik nap miközben egyetemen unatkoztam és olvastam redditet megakadt a szemem egy jó tanácson egyik JS cikknél.Az volt benne ,hogy használjunk ()(function(){kód})-féle kód szerkezetet ,amivel meg tudjuk akadályozni ,hogy beszennyezzük a globális névteret.
A globális névtér azt jelenti ,hogy ez a legkülső blokk ,amiben az alap típusok és objektumok vannak és a program(vagy programfájl) egészére kiterjed. Javascript esetében ezzel azért van gond ,mert ha szokványosan csinálunk függvényeket ,akkor azok a globális névtérbe kerülnek és ha úgy használnánk a JS-t mint régen ,akkor az összes függvényünket egyszerűen leírnánk egymás alá ,viszont ha így tennénk ,akkor név ütközés állhatna elő vagyis ,hogy két függvénynek ugyanaz lenne a neve.
De egyébként is előállhat név ütközés ,ha nem figyelünk az elnevezésekre.
Eddig ezzel nem foglalkoztam ,mivel végül is ügyelek arra ,hogy elnevezéseim ne ütközzenek , na meg nem is dolgozok nagy projekteken ,viszont ha valami nagy dolgon dolgoznék akkor ez gond lehetne. Ekkor gondoltam ránézzek egy cikkre ,úgy is akkor annyi időm volt mint a tenger(2 óra).
Miután kedvem volt kicsit tesztelgetni ezért cloud9 -ben ki is próbáltam néhányat és rádöbbentem ,hogy eddig teljesen rosszul használtam az OOP(Objektum Orientált Paradigmát) ,mivel régebben ,amikor nagy sietségben tanultam a Javascriptet ,néhány dolog felett elsuhantam ,ahogy azt kell.
Már eddig is éreztem ,hogy a kódolási stílusom elég rossz ,mivel nélkülözte az egyik legfontosabb OOP alapelvet ,az egységbezárást. Az egységbezárás azt jelenti ,hogy egy objektum egyes változóit és metódusait ne lehessen közvetlenül elérni ,mert az rossz gyakorlathoz visz el minket.
Ma értettem meg ,hogy mit értett Douglas Crockford azon ,hogy javascript a világ legjobban félreértett nyelve .(Mondhatnám inkább ,hogy a legjobban félre érthető) Mostanság úgy voltam vele ,hogy elegem volt a JS-ből ,mert túlságosan sok idegesítő dolog volt benne .erre úgy látszik ,hogy csak az volt a gond ,hogy nem értettem elégé a nyelvet. Habár még mindig nem a szívem csücske a JS.
Na mindegy, keresgélés közben aztán rábukkantam erre . Ezek példák sorozata haladó javascripthez. Nagyon jó gyűjtemény habár nem meglepő ,mivel a Secrets of the JavaScript Ninja írója csinálta John Resig ,akinek a könyve is alapművé vált a JS közösségben. Lehet ezek után el is olvasom a könyvét ,mert nagyon jó példákat hozz. Aki szeret egyszerű ,de mégis jó példa kódot olvasni ,annak ajánlom a fenti linket.
Tanulóknak nem kell aggódni ,mert megnéztem és codeacademy-n és ott jól van ez megtanítva , főleg ,hogy az oldal megújult és tutorialok-ból is mintha már több lenne(Javult a minőség). Akit érdekel annak elmondom ,hogy van különbség a CodeAcademy-s és ()(function(){}) között ,ezért inkább azt mondom ,hogy a CodeAcademy-s érdemes használni.
Inkább le se írom ,hogy hogyan kódoltam ,de azt elárulom ,hogy a prototype fogalmát elégé félre ismertem és még jó néhány más dolgot. -_-
Ezekbe a hibákba is azért estem bele ,mivel nem teszteltem és nem kíváncsiskodtam eleget annak idején. Szóval ebből is levonható az a tanulság ,hogy az ember képes ugyanazokat a hibákat elkövetni többször :D