Egyéb hasznos tanácsok

Használjunk JavaScript-osztálykönyvtárat

Némileg lerövidítik a webalkalmazások fejlesztésének idejét azáltal, hogy számos olyan megoldást kapunk készen, amit eddig mindig saját kezűleg kellett implementálnunk. Legtöbbjük egy olyan alkalmazásprogramozói felületet (API) biztosít, ami megszabadítja a fejlesztőket a problémák böngészőfüggetlen kezelésétől. Végeredményben a részletek elrejtésével megkönnyítik a fejlesztők dolgát.

Néhány népszerű osztálykönyvtár és forráskódjának mérete
Osztálykönyvtár neve Mérete
Prototype 96 KB
jQuery 20 KB (tömörítve)
MooTools 12-43 KB (tömörítve)
base2 20 KB (tömörítve)
Yahoo! User Interface (YUI) kb. 720 KB (tömörítve, dinamikus szkriptbetöltést használ)
Dojo 150 KB (tömörítve)

Hogy melyik osztálykönyvtárat használjuk, az mindig a megoldandó feladat jellegétől függ. A táblázatban felsorolt JavaScript osztálykönyvtárak közül aYUI és a Dojo teljes körű szolgáltatást nyújt, míg a többi alapkönyvtárnak tekinthető (böngészőfüggetlenség kialakítása, eseménykezelés megoldása, egyszerűsíti a programozást, növeli a kód olvashatóságát). Az előbbi két osztálykönyvtárat nem ajánlom egyszerű weboldalakhoz nagy méretük miatt. Legyünk mindig körültekintőek, mielőtt elköteleznénk magunkat egy adott osztálykönyvtár használata mellett.

Kódolási szabályok

Bár sem a szintaktika, sem a szemantika területére nem sorolható, a forráskód helyes formázása nagyon fontos az olvashatóság szempontjából. Véleményem szerint egy profi programozó legfontosabb felelőssége, hogy „ karbantartható” kódot írjon. Egy jól áttekinthető programkóddal kellemesebb dolgozni (vagy éppen hibát keresni), mint egy silányan formázott kóddal.

A helyzetet bonyolítja, hogy egy programozó sem „légüres térben” dolgozik: programjainkat jelenlegi és jövőbeli kollégáinknak kell majd karbantartaniuk. Két, önmagában megfelelő stílus keveréke viszont ugyanúgy olvashatatlan és karbantarthatatlan kódot eredményezhet, mintha semmilyen stílust nem követnénk, ezért nem csak az a fontos, hogy megfelelő stílusban programozzunk, hanem az is, hogy az együtt dolgozó fejlesztők következetesen ragaszkodjanak egy közös stílushoz.

Következzen most néhány követendő tanács:

Diszkrét JavaScript

...A diszkrét Javascript azt mondja, hogy a HTML kódunkban ne használjunk Javascriptet, válasszuk le, s tegyük külön fájlba teljesen scriptjeinket, s építsük fel úgy az oldalt, hogy azok nélkül is teljes funkcionalitással bírjon - maximum nem olyan kényelmesen. Ismerősnek tűnhet az ötlet: a mai modern CSS technikák pontosan ezt mondják a stíluslapok esetén is: válasszuk szét a megjelenést és a tartalmat...

Tulajdonságfelderítéshez biztonságosabb a typeof

Böngészőfüggetlen kód írásakor gyakran van szükség bizonyos metódusok és tulajdonságok létezésének az ellenőrzésére. typeof operátor nélkül a tulajdonságfelderítés nem megbízható.

if (tulajdonsag){
…
}

Ne feledjük, hogy mi a tulajdonság, vagy metódus létezését szeretnénk leellenőrizni, nem az értékét. A fenti if utasítás zárójelek közötti kifejezése HAMIS értékre lesz kiértékelve abban az esetben is, ha a tulajdonság létezik és false, vagy 0 értéket tartalmaz. Ezen okból a typeof operátor használata ajánlott. Lássunk erre egy példát:

if (typeof XSLTProcessor != "undefined"){
..
}

Kapcsolódó linkek

Használjunk tervezési mintákat (design patterns)

Minden minta olyan problémát ír le, ami újra és újra felbukkan a környezetünkben, s aztán leírja hozzá a megoldás magját, oly módon, hogy a megoldás milliószor felhasználható legyen, anélkül, hogy valaha is kétszer ugyanúgy csinálnánk.

Használatukkal rugalmasabban módosítható és könnyebben, jobban újrahasznosítható alkalmazásokat készíthetünk. Elsősorban a következő tervezési minták alkalmazása ajánlott: Modell-View-Controller, Singleton, Factory, Observer.

JavaScriptben az utasításblokknak nincsen scope-ja

A C nyelvben minden utasításblokk (egy { és }-el elhatárolt programrész) egy új scope-ot, érvényességi tartományt definiál. JavaScriptben csak a függvénynek van scope-ja.

var i=10;
for(var i=0; i < 5; i++){
}
alert(i); // !! az "i" változó értéke 5 lesz!
Vizsgáljuk meg a következő C programrészt:
void fuggv(void){
    int a = 1;
    int b = 2;
    if (true){
        int b = 3;
        a += b;
    }
    echo a; // 4
    echo b; // 2
}
fuggv();

A függvénydefiníción belül az if utasításblokk egy újabb scope-ot hoz létre. Az if utasításblokkban egy b nevű változót hoztunk létre, ami a külső scope-ban már szerepel. A belső scope-ban szereplő b elfedi a külsőben szereplőt.

JavaScriptben belső függvény segítségével tudunk egy függvényen belül további scope-ot létrehozni. Például a következő módon:

function fuggv(){
    var a = 1;
    var b = 2;
    (function(){
        var b = 3;
        a += b;
    })();
    alert(a); // 4
    alert(b); // 2
}
fuggv();
Spirituális családállítás