Kako naredim v Javi to in to

Uporaba pogojnega operatorja v Javi



Predstavitev

Ali bi radi z malo pisanja veliko povedali? S pomočjo Javinega pogojnega operatorja lahko v eni sami vrstici kode spremenljivki priredite vrednost v odvisnosti od ene ali več logičnih odločitev. Ta operator si lahko predstavljate kot možno alternativo stavku if-then-else.
Čeprav vas bo pogojni operator najbrž nekoliko zmedel, ko ga boste videli prvič, pa lahko z njegovo pomočjo z minimalno količino kode sprejmete močne odločitve.


Primer iskanja minimuma/maksimuma

Pogojni operator se pogosto uporablja v namen prirejanja minimalne (ali maksimalne) vrednosti dveh spremenljivk tretji spremenljivki. S tem v bistvu nadomešča klic metode Math.min(a,b) ali Math.max(a,b).

Koda, ki s pomočjo pogojnega operatorja priredi minimum dveh spremenljivk (a in b) tretji spremenljivki z imenom minVal, izgleda takole: Ta koda priredi minVal vrednost a, če je a manjši od b, v nasprotnem primeru dobi minVal vrednost b. Vedite, da oklepaji v tem primeru niso obvezni in sem jih uporabil le, da bi povečal berljivost kode.

Upoštevajte tudi, da je pogojni operator izraz, ki vrne vrednost v odvisnosti od pogoja, ki ga vrednoti. To je drugače kot pri stavku if-then-else, ki v odvisnosti od pogoja izvrši blok stavkov.

Testi hitrosti na delovni postaji Sun Solaris so pokazali, da je bil pri primerjavi spremenljivk tipa float pogojni operator štirikrat hitrejši od metode Math.min(), pri primerjavi spremenljivk tipa integer pa dvakrat hitrejši. Ob podobnih primerih v vaši kodi vam svetujem, da s pomočjo testov ugotovite, če hitrost lahko povečate. Kot pravi star pregovor, je pri vas hitrost lahko drugačna.


Uporaba pogojnega operatorja v drugih primerih

Ko je pri uporabi pogojnega operatorja pogoj že ovrednoten, lahko vrnete karkoli želite. Kot primer algoritma policista naslednja koda primerja dve številčni vrednosti in vrne logično vrednost, s katero odloči, kdo bo kaznovan: Ker veste, da pogojni operator v tem primeru vrne vrednost true/false, lahko naredite kodo še krajšo s tem, da pogojni izraz vključite v stavek if-then: Seveda se mora zaradi lažje berljivosti in vzdrževanja vsak razvijalec (ali skupina razvijalcev) odločiti, kaj je še berljivo in kaj ni več. Ta primer gre najbrž za veliko razvijalcev že predaleč.

Za konec si zapomnite, da lahko pogoj pogojnega operatorja vsebuje obsežne if-then primerjave. Naslednja koda za samonadzorovani avto se precej obsežno odloča o ustavljanju na osnovi več logičnih vrednosti: V tem primeru postavimo stopCar na true, če je na semaforju rdeča luč, če se je promet ustavil, če nam je zmanjkalo goriva ali če je pred nami stena. V nasprotnem primeru z vožnjo nadaljujemo.


Zaključek

Ko se enkrat navadite rahlo nenavadne sintakse, lahko s pomočjo pogojnega operatorja z minimalno količino kode sprejemate močne odločitve. Mislim, da je njegova uporaba zelo ustrezna za primere, ko na osnovi kratkih logičnih odločitev posamezni spremenljivki priredite vrednost. Operator pa boste našli tudi v izvorni kodi knjižnic razredov številnih ponudnikov, zato je dobro, da ta nenavadni operator vsaj zmerno razumete.

avtor: Damir Arh
november, 1998