Preprostejše, če izjave vedno pomenijo čistejšo kodo JavaScript.
Pogojni stavki so bistveni del JavaScripta. Omogočajo vam izvajanje kode glede na to, ali je dani pogoj resničen ali napačen, in jih lahko ugnezdite več elseif izjave (in an drugače) za ovrednotenje več kot enega pogoja.
Toda tukaj je težava - ko pišete zapleteno če potem verige, lahko stvari hitro postanejo neurejene in zlahka končate s kodo, ki jo je težko brati in razumeti.
Naučimo se dolgotrajnega in zapletenega preoblikovanja če... sicer če... drugače pogojne verige v bolj jedrnato, čistejšo in lažje razumljivo različico.
Kompleksno če...drugače Verige
Pri pisanju zapletenih stavkov if...else v JavaScriptu je bistveno, da pišete čista, jedrnata in razumljiva koda. Oglejte si na primer če potem pogojna veriga znotraj spodnje funkcije:
funkcijocanDrink(oseba) {
če(oseba?.starost != nič) {
če(oseba.starost < 18) {
konzola.log("Še premlad")
} drugačeče(starost osebe < 21) {
konzola.log("Ne v ZDA")
} drugače {
konzola.log("Dovoljeno piti")
}
} drugače {
konzola.log("Ti nisi oseba")
}
}konst oseba = {
starost: 22
}
canDrink (oseba)
Logika je preprosta. Prvi če izjava zagotavlja, da oseba predmet ima starost premoženje (sicer ni oseba). Znotraj tega če blok, ste dodali če... drugače... če veriga, ki v bistvu pravi:
Če je oseba mlajša od 18 let, je premlada za pijačo. Če so mlajši od 21 let, so še vedno pod zakonsko določeno starostjo za uživanje alkohola v Združenih državah. Sicer pa lahko zakonito dobijo pijačo.
Čeprav je zgornja koda veljavna, je zaradi gnezdenja težje razumeti kodo. Na srečo lahko kodo spremenite tako, da bo jedrnata in lažja za branje, z varovalna klavzula.
Varovalne klavzule
Kadarkoli imate če stavek, ki ovije vso vašo kodo, lahko uporabite a varovalna klavzula da odstranite vse gnezdenje:
funkcijocanDrinkBetter() {
če(oseba?.starost == nič) vrnitevkonzola.log("Ti nisi oseba")
če(oseba.starost < 18) {
konzola.log("Še premlad")
} drugačeče(starost osebe < 21) {
konzola.log("Ne v ZDA")
} drugače {
konzola.log("Dovoljeno piti")
}
}
Na začetku funkcije ste definirali zaščitno klavzulo, ki navaja, da če ta določen pogoj ni izpolnjen, želite zapustiti canDrinkBetter() takoj delovati (in na konzolo vpisati »Ti nisi oseba«).
Če pa je pogoj izpolnjen, ocenite če potem verigo, da vidite, kateri blok je uporaben. Zagon kode vam daje enak rezultat kot prvi primer, vendar je to kodo lažje brati.
Ne uporabljajte enega vračila
Lahko trdite, da zgornja tehnika ni dober princip programiranja ker uporabljamo več vrnitev v isti funkciji in menite, da je bolje imeti samo en stavek o vrnitvi (tudi pravilnik o eni vrnitvi).
Toda to je grozen način pisanja kode, ker vas prisili v enake nore situacije gnezdenja, kot smo jih videli v prvem vzorcu kode.
Glede na to lahko uporabite več vrnitev izjave za nadaljnjo poenostavitev vaše kode (in se znebite gnezdenja):
funkcijocanDrinkBetter() {
če(oseba?.starost == nič) vrnitevkonzola.log("Ti nisi oseba")če(oseba.starost < 18) {
konzola.log("Še premlad")
vrnitev
}če(oseba.starost < 21) {
konzola.log("Ne v ZDA")
vrnitev
}
konzola.log("Dovoljeno piti")
}
Ta koda deluje enako kot prejšnja dva primera in je tudi nekoliko čistejša.
Izvleček funkcij za čistejšo kodo
Naš zadnji blok kode je bil čistejši od prvih dveh, vendar še vedno ni tako dober, kot bi lahko bil.
Namesto da bi imeli dolgo če potem verigo znotraj ene funkcije, lahko ustvarite ločeno funkcijo canDrinkResult() ki opravi preverjanje namesto vas in vrne rezultat:
funkcijocanDrinkResult(starost) {
če(starost < 18) vrnitev"Še premlad"
če(starost < 21) vrnitev"Ne v ZDA"
vrnitev"Dovoljeno piti"
}
Nato znotraj glavne funkcije morate najprej uporabiti klavzulo guard, preden pokličete canDrinkResult() funkcijo (s starostjo kot parametrom), da dobimo rezultat:
funkcijocanDrinkBetter() {
če(oseba?.starost == nič) vrnitevkonzola.log("Ti nisi oseba")
pustiti rezultat = canDrinkResult (oseba.starost)
konzola.log (rezultat)
}
Torej ste v tem primeru nalogo preverjanja starosti pitja prenesli na ločeno funkcijo in jo poklicali le, ko je bilo potrebno. Zaradi tega je vaša koda jedrnata in enostavnejša za delo kot vsi prejšnji primeri.
Držite se stran od pogojnih stavkov
Naučili ste se preurediti zapletene, ugnezdene pogojne verige v krajše, lažje berljive z uporabo varovalnih klavzul in tehnike ekstrakcije funkcij.
Poskusite obdržati drugače stavek čim bolj stran od vaših pogojnikov z uporabo varovalnih klavzul in tehnike ekstrakcije funkcij.
Če še vedno uporabljate JavaScript če potem izjava, začnite z osnovami.