previous next Up Title Contents Index

21.1 Miksi tarkistukset

Oikeassa ohjelmassa on todella tärkeää, että syöttötietojen oikeellisuus tarkistetaan. Aina on lähdettävä siitä oletuksesta, että käyttäjät ovat täysiä idiootteja (älkää kertoko tätä mahdollisille käyttäjille). Toisaalta idioottitarkistuksia ei saa olla liikaa. Esimerkiksi "Oletko varma" - tyyliset kysymykset rupeavat ennen pitkää ärsyttämään kokenutta käyttäjää.

Hyvä ohjelma olisi muutettavissa käyttäjän mukaan. Aloittelijalle enemmän ohjeita ja varmistuskysymyksiä ja kokenut käyttäjä saa itse vastata tekosistaan.

Eri kielten toiminta eri tietotyyppejä luettaessa vaihtelee. Pascal - ohjelma kaatuu mikäli numeeriseen tietoon vastataan merkkitietoa. Mikä olisikaan harmillisempaa kuin se, että sihteeri on naputellut tietoja koko päivän (EIKÄ OLE TALLETTANUT NIITÄ VÄLILLÄ!???) ja iltapäivän väsymyksessä vastaa kysymykseen

	Jäsenmaksu>kymppi
ja koko ohjelman suoritus loppuu!

C- kieli on huomattavasti siedettävämpi numeerisen tiedon luvussa. scanf ei vain muuta merkkitietoa numeeriseksi ja näin tavallisen scanf- funktion käyttö on aivan suotavaa numeerisen tiedon lukemiseen. Rivin lukematta jäänyt (mahdollisesti virheellinen) osa on sitten syytä poistaa (fflush).

C- kielen huono puoli on siinä, että vastaavasti merkkijonojen lukeminen standardifunktioilla on vaarallista. Näiden lukemiseen pitääkin lähes poikkeuksetta tehdä oma aliohjelma (tai käyttää sopivaa kirjastoa). Aina on ihmisiä, jotka sanovat: "Laita jonon pituudeksi 200, niin ei kukaan jaksa kirjoittaa niin pitkää vastausta!". Näinhän se on, mutta monestiko itselläsi on manuaali tai jokin muu esine jäänyt nojaamaan näppäimistöön ja näin auto- repeat - toiminto työntää määrättömästi merkkejä?

Todellisissa ohjelmissa voidaan näppäimistön lukua tehdä merkki kerrallaan aliohjelmilla, joille on tarkkaan kerrottu syötön muoto ja sen aikana sallitut näppäimet. Tällöin mahdollisista virhepainalluksista voidaan piipata tai niihin voidaan reagoida muuten. Samoin kentälle varatun koon ylittyessä voidaan heti reagoida. Tämä kuitenkin vaatii puskuroimatonta syötön käsittelyä (ohjelmien siirrettävyys kärsii) ja hieman lisää vaivaa.


previous next Up Title Contents Index