JavaScript Academy · Oppitunti

Defensiivinen ohjelmointi ja syötteiden tarkistukset

Kirjoita pieniä syötteentarkistuksia, käytä guard clause -rakenteita, turvallista jäsentämistä, oletusarvoja ja yksinkertaista objektien validointia virheiden ehkäisemiseksi ajoissa

Oppitunti 2/28 vaihetta

Defensiivinen ohjelmointi ja syötteiden tarkistukset on ilmainen JavaScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/2. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu JavaScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. JavaScript Academy-kurssilla on yhteensä 2 oppituntia.

Johdanto ennakoiviin tarkistuksiin

Tavoite: Pysäyttäkää virheelliset syötteet heti, jotta virheet eivät leviä.

  • Tyyppi- ja aluetarkistukset
  • Guard-lausekkeet
  • Turvallinen jäsentäminen
  • Oletusarvot ja yksinkertainen olioiden vahvistus
Defensiivinen ohjelmointi ja syötteiden tarkistukset — kuvitus 1

Tyyppiä tarkistavat apuohjelmat

Luokaa pieniä apuohjelmia, jotta voitte käyttää uudelleen tarkistuksia, kuten number- ja non-empty string -tarkistuksia.

// Tiny type helpers
function isNumber(n) {
  return typeof n === "number" && Number.isFinite(n);
}

function isNonEmptyString(s) {
  return typeof s === "string" && s.trim().length > 0;
}

console.log("isNumber(3):", isNumber(3));
console.log("isNumber(NaN):", isNumber(NaN));
console.log("isNonEmptyString(\"\"):", isNonEmptyString(""));
console.log("isNonEmptyString(\"hi\"):", isNonEmptyString("hi"));
Defensiivinen ohjelmointi ja syötteiden tarkistukset — kuvitus 2

Guard-lausekkeen esimerkki

Tarkistakaa syötteet ensin ja pysäyttäkää suoritus heti virheen kohdalla, jotta pääpolku pysyy selkeänä.

// Guard clauses: return early if invalid
function buy(quantity) {
  if (!isNumber(quantity)) {
    console.log("Quantity must be a number");
    return;
  }
  if (quantity <= 0) {
    console.log("Quantity must be > 0");
    return;
  }
  console.log("Buying", quantity, "items");
}

buy(3);
buy("3");
buy(0);
Defensiivinen ohjelmointi ja syötteiden tarkistukset — kuvitus 3

Jäsentäminen varavaihtoehdolla

Vahvistakaa jäsennetyt tulokset. Jos jäsentäminen epäonnistuu, palauttakaa pieni fallback ohjelman kaatumisen sijaan.

// Parse safely and use sensible defaults
function toInt(str, fallback = 0) {
  const n = parseInt(str, 10);
  if (!Number.isFinite(n)) {
    return fallback;
  }
  return n;
}

console.log("toInt(\"42\"):", toInt("42"));
console.log("toInt(\"7px\", -1):", toInt("7px", -1));
console.log("toInt(\"abc\", 0):", toInt("abc", 0));
Defensiivinen ohjelmointi ja syötteiden tarkistukset — kuvitus 4

Oletusarvot ja alueet

Käyttäkää ??-operaattoria null/undefined-oletusarvoille ja rajatkaa arvo sen jälkeen turvalliselle alueelle.

// Defaults with ?? and simple range checks
function clampPercent(value) {
  // Use 0 as default when value is null or undefined
  const v = (value ?? 0);

  if (!isNumber(v)) {
    return 0;
  }
  // Clamp into 0..100
  const clamped = Math.min(100, Math.max(0, v));
  return clamped;
}

console.log(clampPercent(undefined));
console.log(clampPercent(120));
console.log(clampPercent(-5));
console.log(clampPercent(55));
Defensiivinen ohjelmointi ja syötteiden tarkistukset — kuvitus 5

Olion rakenteen tarkistus

Tarkistakaa pakolliset kentät ja yksinkertaiset alueet. Palauttakaa pieni tulosolio, kuten { ok, reason }.

// Simple object validation
function validateUser(u) {
  if (u == null || typeof u !== "object") {
    return { ok: false, reason: "User must be an object" };
  }
  if (!isNonEmptyString(u.name)) {
    return { ok: false, reason: "name required" };
  }
  if (!isNumber(u.age) || u.age < 0) {
    return { ok: false, reason: "age must be a number >= 0" };
  }
  return { ok: true };
}

console.log("good:", validateUser({ name: "Ayla", age: 21 }));
console.log("bad:", validateUser({ name: "", age: -1 }));
Defensiivinen ohjelmointi ja syötteiden tarkistukset — kuvitus 6

Ennakoivien tarkistusten visa

Pikatarkistus: Syötteiden ennakoiva käsittely.

Defensiivinen ohjelmointi ja syötteiden tarkistukset — kuvitus 7

Kertaus

Kertaus: Käyttäkää pieniä tyyppitarkistuksia, guard-lausekkeita, turvallista jäsentämistä varavaihtoehdoilla, nullish-oletusarvoja, alueiden rajaamista ja yksinkertaista olioiden vahvistusta virheiden pysäyttämiseen aikaisessa vaiheessa.

Defensiivinen ohjelmointi ja syötteiden tarkistukset — kuvitus 8
Aloita maksutta

Opi JavaScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
59
Oppitunnit
200

Usein kysytyt kysymykset

Onko oppitunti ”Defensiivinen ohjelmointi ja syötteiden tarkistukset” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa JavaScript Academy-oppimispolun 3 oppituntia, myös oppitunnin “Defensiivinen ohjelmointi ja syötteiden tarkistukset”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. JavaScript Academy-kurssilla on yhteensä 2 oppituntia.

Mitä opin oppitunnilla ”Defensiivinen ohjelmointi ja syötteiden tarkistukset”?

Kirjoita pieniä syötteentarkistuksia, käytä guard clause -rakenteita, turvallista jäsentämistä, oletusarvoja ja yksinkertaista objektien validointia virheiden ehkäisemiseksi ajoissa Harjoittelet JavaScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni JavaScript Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin JavaScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/2.

Kuinka kauan ”Defensiivinen ohjelmointi ja syötteiden tarkistukset”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä JavaScript Academy-oppitunnilla?

Kyllä. Jokainen JavaScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. try/catch/finally, throw ja mukautetut virheet
  2. Defensiivinen ohjelmointi ja syötteiden tarkistukset
← Takaisin: JavaScript Academy