Paprasčiau, jei teiginiai visada reiškia švaresnį JavaScript kodą.

Sąlyginiai teiginiai yra esminė JavaScript dalis. Jie leidžia vykdyti kodą pagal tai, ar nurodyta sąlyga yra teisinga, ar klaidinga, ir galite įdėti kelis elseif pareiškimai (ir an Kitas) įvertinti daugiau nei vieną sąlygą.

Bet čia yra problema - rašant sudėtingą jei...kitaip grandinės, viskas gali greitai susimaišyti, ir jūs galite lengvai gauti kodą, kurį sunku perskaityti ir suprasti.

Išmokime ilgai ir sudėtingai refaktorizuoti jei...kitaip...kitaip sąlygines grandines į glaustesnę, aiškesnę ir lengviau suprantamą versiją.

Sudėtingos jei...kita grandinės

Rašydami sudėtingus if...else teiginius „JavaScript“, būtina rašyti švarus, glaustas ir suprantamas kodas. Pavyzdžiui, pažiūrėkite į jei...kitaip sąlyginė grandinė žemiau esančioje funkcijoje:

funkcijagali Gerti(asmuo) {
jeigu(asmuo?.amžius != nulinis) {
jeigu(asmuo.amžius < 18) {
konsolė.log("Dar per jaunas")
} Kitasjeigu(asmuo.amžius < 21) {
konsolė.log(„Ne JAV“)
} Kitas {
konsolė.log("Leista gerti")
}
} Kitas {
konsolė.log("Tu ne žmogus")
}
}

konst asmuo = {
amžius: 22
}

instagram viewer

canDrink (asmuo)

Logika čia paprasta. Pirmas jeigu pareiškimas užtikrina, kad asmuo objektas turi amžiaus turtas (kitu atveju jis nėra asmuo). Jo viduje jeigu blokas, pridėjote jei...kitaip...jei grandinė, kuri iš esmės sako:

Jei asmuo yra jaunesnis nei 18 metų, jis per jaunas, kad galėtų atsigerti. Jei jaunesni nei 21 metų, jie vis dar yra jaunesni nei JAV legalus alkoholio vartojimo amžius. Priešingu atveju jie gali legaliai gauti gėrimo.

Nors aukščiau pateiktas kodas galioja, dėl įdėjimo jums sunku suprasti kodą. Laimei, kodą galite pakeisti glaustu ir lengviau skaitomu naudodami a apsaugos sąlyga.

Apsaugos sąlygos

Bet kada, kai turite jeigu teiginį, apimantį visą jūsų kodą, galite naudoti a apsaugos sąlyga Norėdami pašalinti visus lizdus:

funkcijagali GertiGeriau() {
jeigu(asmuo?.amžius == nulinis) grąžintikonsolė.log("Tu ne žmogus")

jeigu(asmuo.amžius < 18) {
konsolė.log("Dar per jaunas")
} Kitasjeigu(asmuo.amžius < 21) {
konsolė.log(„Ne JAV“)
} Kitas {
konsolė.log("Leista gerti")
}
}

Funkcijos pradžioje apibrėžėte apsaugos sąlygą, nurodantį, kad jei ši konkreti sąlyga neįvykdyta, norite išeiti iš gali gerti geriau() iš karto (ir konsolėje įrašykite „Tu ne asmuo“).

Bet jei sąlyga įvykdoma, įvertinkite jei...kitaip grandinę, kad pamatytumėte, kuris blokas yra tinkamas. Vykdydami kodą gausite tą patį rezultatą kaip ir pirmame pavyzdyje, tačiau šį kodą lengviau perskaityti.

Nenaudokite vienkartinio grąžinimo

Galite ginčytis, kad aukščiau pateikta technika nėra a geras programavimo principas nes toje pačioje funkcijoje naudojame kelis grąžinimus ir manote, kad geriau turėti tik vieną grąžinimo teiginį (dar žinomą kaip vieno grąžinimo politika).

Tačiau tai yra baisus būdas rašyti kodą, nes jis priverčia jus patekti į tas pačias beprotiškas lizdų situacijas, kurias matėme pirmajame kodo pavyzdyje.

Tai pasakius, galite naudoti kelis grąžinti teiginiai, siekiant dar labiau supaprastinti kodą (ir atsikratyti lizdo):

funkcijagali GertiGeriau() {
jeigu(asmuo?.amžius == nulinis) grąžintikonsolė.log("Tu ne žmogus")

jeigu(asmuo.amžius < 18) {
konsolė.log("Dar per jaunas")
grąžinti
}

jeigu(asmuo.amžius < 21) {
konsolė.log(„Ne JAV“)
grąžinti
}

konsolė.log("Leista gerti")
}

Šis kodas veikia taip pat, kaip du ankstesni pavyzdžiai, ir yra šiek tiek švaresnis.

Išskleiskite „Cleaner Code“ funkcijas

Paskutinis mūsų kodo blokas buvo švaresnis nei pirmieji du, tačiau jis vis tiek nėra toks geras, koks galėtų būti.

Užuot turėjęs ilgą jei...kitaip grandinės viduje vienoje funkcijoje, galite sukurti atskirą funkciją canDrinkResult() kuris atlieka patikrinimą už jus ir pateikia rezultatą:

funkcijacanDrinkResult(amžiaus) {
jeigu(amžius < 18) grąžinti"Dar per jaunas"
jeigu(amžius < 21) grąžinti„Ne JAV“
grąžinti"Leista gerti"
}

Tada pagrindinėje funkcijoje viskas, ką jums reikia padaryti, tai pirmiausia pritaikyti apsaugos sąlygą prieš skambinant canDrinkResult() funkcija (parametras yra amžius), kad gautumėte rezultatą:

funkcijagali GertiGeriau() { 
jeigu(asmuo?.amžius == nulinis) grąžintikonsolė.log("Tu ne žmogus")

leisti rezultatas = canDrinkResult (person.age)
konsolė.log (rezultatas)
}

Taigi šiuo atveju jūs delegavote užduotį tikrinti girtavimo amžių į atskirą funkciją ir paskambinote tik tada, kai reikia. Dėl to jūsų kodas yra glaustas ir su juo lengviau dirbti nei su visais ankstesniais pavyzdžiais.

Laikykite atokiau nuo sąlyginių teiginių

Sužinojote, kaip pertvarkyti sudėtingas, įdėtas sąlygines grandines į trumpesnes, lengviau skaitomas, naudodami apsaugines sąlygas ir funkcijų ištraukimo techniką.

Stenkitės išlaikyti Kitas teiginį kiek įmanoma atokiau nuo sąlyginių sąlygų, naudodami ir apsaugines sąlygas, ir funkcijų ištraukimo techniką.

Jei vis dar naudojate „JavaScript“. jei...kitaip pareiškimą, pradėkite nuo pagrindų.