Hirdetés

Új hozzászólás Aktív témák

  • inf3rno
    nagyúr

    Ezeknek nem az az ertelme, hogy tipusossa tegyunk egy dinamikusan tipusos nyelvet, ennek ondokumentacio meg self validation miatt van ertelme.

    Pl ha van egy fuggveny ahol azt varod hogy tombbel hivjak meg, de biztosra akarsz menni, akkor

    rossz esetben igy irod meg

    function doStuff(inputArray) {
    return inputArray.map(makeChange);
    }

    Jo esetben pedig igy

    /**
    * @param {Array} inputArray
    * @return {Array}
    */
    function doStuff (inputArray) {
    if (!inputArray || !utils.isArray(inputArray)) {
    return [];
    }
    return inputArray.map(makeChange);
    }

    Ondokumentalas, es annak a kodbeli leirasa, hogy te mint programozo milyen mukodesre irtad meg a fuggvenyt. Persze lehet ezt kevesbe expliciten is irni, pl:

    function doStuff (inputArray) {
    return (inputArray || []).map(makeChange);
    }

    De ez utobbi megint csak a falsy value-k ellen ved, az ellen nem ha pl egy stringet adnak meg.

    1.
    Hja, meglepődtem. Leginkább a null-on... Ezt a validációs részét a js-nek már 10 éve is újra kellett volna írni szerintem. Az egész egy jó nagy katyvasz. Elég hasonló a PHP-hez ilyen téren.

    2.
    Erre mondtam, hogyha annyira a típus validálással akarsz molyolni, akkor érdemesebb TypeScriptet használni.

    Én személy szerint így oldanám meg a dolgot sima js-el:

    function doStuff (inputArray) {
    if (!(inputArray instanceof Array))
    throw new TypeError("Array required.");
    return inputArray.map(makeChange);
    }

    aszinkron esetben meg

    function doStuff (done, inputArray) {
    if (!(inputArray instanceof Array)) {
    done(new TypeError("Array required."));
    return;
    }
    done(null, inputArray.map(makeChange));
    }

    Primitíveknél is ugyanúgy jó a typescript, vagy ha nem szeretnél compile-t, akkor valóban írhatsz olyat, hogy

    if (utils.typeOf(value, String))

    és hasonlókat.

    Szvsz. nem muszáj minden esetben ennyire szigorúan típusellenőrizni. Attól függ, hogy mire fejleszted a kódot. Ha valami kisebb projekthez kell gyorsan összeszórni olyasmit, amit ránézésre átlátsz, akkor felesleges erre időt pazarolni.

    Leginkább az a hátránya ennek a nem beépített típusellenőrzésnek, hogy TDD-vel a teszt kód nagy része erre megy el, ahelyett, hogy a tényleges funkciókat tesztelné az ember.

Új hozzászólás Aktív témák