Yksinkertaisempi, jos lauseet tarkoittavat aina puhtaampaa JavaScript-koodia.
Ehdolliset lauseet ovat olennainen osa JavaScriptiä. Niiden avulla voit suorittaa koodia sen perusteella, onko tietty ehto tosi vai epätosi, ja voit sijoittaa useita muuten jos lausunnot (ja an muu) arvioidaksesi useampaa kuin yhtä ehtoa.
Mutta tässä on ongelma – kun kirjoitat monimutkaista tai muuten ketjut, asiat voivat mennä nopeasti sekaisin, ja voit helposti päätyä koodiin, jota on vaikea lukea ja ymmärtää.
Opitaan refaktoroimaan pitkä ja monimutkainen jos...muuten...muuten ehdolliset ketjut ytimekkäämmäksi, puhtaammaksi ja helpommin ymmärrettäväksi versioksi.
Monimutkaiset jos...muut ketjut
Kun kirjoitat monimutkaisia if...else-lauseita JavaScriptillä, on tärkeää kirjoittaa puhdas, ytimekäs ja ymmärrettävä koodi. Katso esimerkiksi tai muuten ehdollinen ketju alla olevan funktion sisällä:
toimintovoi Juoda(henkilö) {
jos(henkilö?.ikä != tyhjä) {
jos(henkilö.ikä < 18) {
konsoli.Hirsi("Vielä liian nuori")
} muujos(henkilö.ikä < 21) {
konsoli.Hirsi("Ei Yhdysvalloissa")
} muu {
konsoli.Hirsi("Salli juoda")
}
} muu {
konsoli.Hirsi("Et ole ihminen")
}
}konst henkilö = {
ikä: 22
}
canDrink (henkilö)
Logiikka tässä on yksinkertainen. Ensimmäinen jos lausunto varmistaa, että henkilö esineellä on ikä omaisuutta (muuten hän ei ole henkilö). Sen sisällä jos lohko, olet lisännyt jos...muuten...jos ketju, joka pohjimmiltaan sanoo:
Jos henkilö on alle 18-vuotias, hän on liian nuori juomaan. Jos he ovat alle 21-vuotiaita, he ovat edelleen alle Yhdysvalloissa laillisen juomisiän. Muuten he voivat saada juoman laillisesti.
Vaikka yllä oleva koodi on voimassa, sisäkkäisyys vaikeuttaa koodin ymmärtämistä. Onneksi voit muuttaa koodin tiiviiksi ja helpommin luettavaksi käyttämällä a suojalauseke.
Vartijalausekkeet
Aina kun sinulla on jos lauseke, joka kääri koko koodisi, voit käyttää a suojalauseke poistaaksesi kaikki sisäkkäiset:
toimintovoi juodaParemmin() {
jos(henkilö?.ikä == tyhjä) palatakonsoli.Hirsi("Et ole ihminen")
jos(henkilö.ikä < 18) {
konsoli.Hirsi("Vielä liian nuori")
} muujos(henkilö.ikä < 21) {
konsoli.Hirsi("Ei Yhdysvalloissa")
} muu {
konsoli.Hirsi("Salli juoda")
}
}
Toiminnon alussa määritit suojalausekkeen, jonka mukaan jos kyseinen ehto ei täyty, haluat poistua voi juodaparemmin() toiminto välittömästi (ja kirjaa konsoliin "Et ole henkilö").
Mutta jos ehto täyttyy, arvioit tai muuten ketjua nähdäksesi, mikä lohko on sopiva. Koodin suorittaminen antaa saman tuloksen kuin ensimmäinen esimerkki, mutta tämä koodi on helpompi lukea.
Älä käytä kertapalautusta
Saatat väittää, että yllä oleva tekniikka ei ole a hyvä ohjelmointiperiaate koska käytämme useita palautuksia samassa funktiossa ja uskot, että on parempi käyttää vain yksi palautuslauseke (eli yhden palautuskäytäntö).
Mutta tämä on kauhea tapa kirjoittaa koodia, koska se pakottaa sinut samoihin hulluihin sisäkkäistilanteisiin, joita näimme ensimmäisessä koodinäytteessä.
Tämän jälkeen voit käyttää useita palata lausekkeet yksinkertaistaaksesi koodiasi entisestään (ja päästäksesi eroon sisäkkäisistä):
toimintovoi juodaParemmin() {
jos(henkilö?.ikä == tyhjä) palatakonsoli.Hirsi("Et ole ihminen")jos(henkilö.ikä < 18) {
konsoli.Hirsi("Vielä liian nuori")
palata
}jos(henkilö.ikä < 21) {
konsoli.Hirsi("Ei Yhdysvalloissa")
palata
}
konsoli.Hirsi("Salli juoda")
}
Tämä koodi toimii samalla tavalla kuin kaksi edellistä esimerkkiä, ja se on myös hieman puhtaampi.
Pura toimintoja Cleaner Code
Viimeinen koodilohkomme oli puhtaampi kuin kaksi ensimmäistä, mutta se ei silti ole niin hyvä kuin voisi olla.
Sen sijaan, että olisi pitkä tai muuten ketju yhden funktion sisällä, voit luoda erillisen funktion canDrinkResult() joka tekee tarkistuksen puolestasi ja palauttaa tuloksen:
toimintocanDrinkResult(ikä) {
jos(ikä < 18) palata"Vielä liian nuori"
jos(ikä < 21) palata"Ei Yhdysvalloissa"
palata"Salli juoda"
}
Sitten päätoiminnon sisällä sinun tarvitsee vain soveltaa suojalauseketta ennen soittamista canDrinkResult() funktio (parametrina ikä) saadaksesi tuloksen:
toimintovoi juodaParemmin() {
jos(henkilö?.ikä == tyhjä) palatakonsoli.Hirsi("Et ole ihminen")
antaa tulos = canDrinkResult (person.age)
konsoli.log (tulos)
}
Joten tässä tapauksessa delegoit juomisen iän tarkistamisen erilliselle toiminnolle ja soitit sen vain tarvittaessa. Tämä tekee koodistasi tiiviin ja helpommin käytettävän kuin kaikki aiemmat esimerkit.
Pidä muut poissa ehdollisista lausunnoista
Olet oppinut muuntamaan monimutkaiset sisäkkäiset ehdolliset ketjut lyhyemmiksi, helpommin luetuiksi ketjuiksi käyttämällä suojalauseita ja funktion erotustekniikkaa.
Yritä pitää muu lause mahdollisimman kaukana ehdollisista lausekkeista käyttämällä sekä suojalauseita että funktion erotustekniikkaa.
Jos olet vielä uusi JavaScriptin käytössä tai muuten lausunto, aloita perusasioista.