Jednoduchšie, ak príkazy vždy znamenajú čistejší kód JavaScript.

Nevyhnutnou súčasťou JavaScriptu sú podmienené príkazy. Umožňujú vám spustiť kód na základe toho, či je daná podmienka pravdivá alebo nepravdivá, a môžete ich vnoriť viacero ináč Ak vyhlásenia (a inak) na vyhodnotenie viac ako jednej podmienky.

Ale tu je problém - pri písaní zložitom ak...inak reťaze, veci sa môžu rýchlo zamotať a ľahko môžete skončiť s kódom, ktorý je ťažké prečítať a pochopiť.

Poďme sa naučiť, ako refaktorovať dlho a komplexne ak...inak...inak podmienené reťazce do stručnejšej, čistejšej a ľahšie pochopiteľnej verzie.

Komplexné, ak...iné reťazce

Pri písaní zložitých príkazov if... else v JavaScripte je nevyhnutné, aby ste písali čistý, stručný a zrozumiteľný kód. Napríklad sa pozrite na ak...inak podmienený reťazec vnútri funkcie nižšie:

funkciucanPiť(osoba) {
ak(osoba?.vek != nulový) {
ak(osoba.Vek < 18) {
konzoly.log("Stále príliš mladý")
} inakak(osoba.vek < 21) {
konzoly.log("Nie v USA")
} inak {
konzoly.log("Povolené piť")
}
} inak {
konzoly.log("Nie si človek")
}
}

konšt osoba = {
vek: 22
}

canDrink (osoba)

instagram viewer

Logika je tu jednoduchá. Prvý ak vyhlásenie zabezpečuje, že osoba objekt má Vek majetok (inak to nie je osoba). Vo vnútri toho ak blok, pridali ste ak...inak...ak reťazec, ktorý v podstate hovorí:

Ak je osoba mladšia ako 18 rokov, je príliš mladá na to, aby sa napila. Ak majú menej ako 21 rokov, stále sú pod hranicou zákonného veku na pitie v Spojených štátoch. Inak sa môžu legálne napiť.

Kým vyššie uvedený kód je platný, vnorenie vám sťažuje pochopenie kódu. Našťastie môžete kód refaktorovať tak, aby bol stručný a ľahšie čitateľný pomocou a strážna doložka.

Strážne klauzuly

Kedykoľvek máte ak príkaz, ktorý obalí celý váš kód, môžete použiť a strážna doložka na odstránenie všetkých vnorení:

funkciucanDrinkBetter() {
ak(osoba?.vek == nulový) vrátiťkonzoly.log("Nie si človek")

ak(osoba.Vek < 18) {
konzoly.log("Stále príliš mladý")
} inakak(osoba.vek < 21) {
konzoly.log("Nie v USA")
} inak {
konzoly.log("Povolené piť")
}
}

Na začiatku funkcie ste definovali ochrannú klauzulu, v ktorej sa uvádza, že ak táto konkrétna podmienka nie je splnená, chcete ukončiť canDrinkBetter() okamžite fungovať (a zaznamenať do konzoly „Nie ste osoba“).

Ale ak je podmienka splnená, vyhodnotíte ak...inak reťaz, aby ste videli, ktorý blok je použiteľný. Spustenie kódu vám poskytne rovnaký výsledok ako v prvom príklade, ale tento kód je ľahšie čitateľný.

Nepoužívajte jednorazový návrat

Môžete namietať, že vyššie uvedená technika nie je a dobrý princíp programovania pretože v tej istej funkcii používame viacero návratov a vy veríte, že je lepšie mať iba jeden návratový príkaz (aka, politika jedného návratu).

Ale toto je hrozný spôsob písania kódu, pretože vás to núti do rovnakých šialených situácií vnorenia, aké sme videli v prvej ukážke kódu.

Vďaka tomu môžete použiť viacero vrátiť príkazy na ďalšie zjednodušenie kódu (a zbavenie sa vnorenia):

funkciucanDrinkBetter() {
ak(osoba?.vek == nulový) vrátiťkonzoly.log("Nie si človek")

ak(osoba.Vek < 18) {
konzoly.log("Stále príliš mladý")
vrátiť
}

ak(osoba.Vek < 21) {
konzoly.log("Nie v USA")
vrátiť
}

konzoly.log("Povolené piť")
}

Tento kód funguje rovnako ako dva predchádzajúce príklady a je tiež o niečo čistejší.

Extrahovať funkcie pre kód čističa

Náš posledný blok kódu bol čistejší ako prvé dva, ale stále nie je taký dobrý, ako by mohol byť.

Namiesto dlhého ak...inak reťaz vnútri jednej funkcie, môžete vytvoriť samostatnú funkciu canDrinkResult() to vykoná kontrolu za vás a vráti výsledok:

funkciucanDrinkResult(Vek) {
ak(vek < 18) vrátiť"Stále príliš mladý"
ak(vek < 21) vrátiť"Nie v USA"
vrátiť"Povolené piť"
}

Potom v hlavnej funkcii všetko, čo musíte urobiť, je najprv použiť ochrannú klauzulu pred volaním canDrinkResult() funkcia (s vekom ako parametrom) na získanie výsledku:

funkciucanDrinkBetter() { 
ak(osoba?.vek == nulový) vrátiťkonzoly.log("Nie si človek")

nech výsledok = canDrinkResult (osoba.vek)
konzoly.log (výsledok)
}

Takže v tomto prípade ste úlohu kontroly veku pitia delegovali na samostatnú funkciu a zavolali ste ju len v prípade potreby. Vďaka tomu je váš kód stručný a pracuje sa s ním jednoduchšie ako so všetkými predchádzajúcimi príkladmi.

Inak sa držte ďalej od podmienených vyhlásení

Naučili ste sa refaktorovať zložité, vnorené podmienené reťazce na kratšie, ľahšie čitateľné reťazce pomocou ochranných doložiek a techniky extrakcie funkcií.

Pokúste sa zachovať inak vyhlásenie čo najviac od vašich podmienok pomocou ochranných klauzúl a techniky extrakcie funkcií.

Ak ešte len začínate používať JavaScript ak...inak vyhlásenie, začnite od základov.