Javascript-verkfæri í aðgerð
Uppgötvaðu nokkur JavaScript-tólin til að bæta forritunarhæfileika þína. Kynntu þér nánar ESLint, Prettier og Husky!
Lestu greinina okkar til að uppgötva kraft virkniforritunar í JavaScript. Virkniforritun er flokkuð sem lýsandi forritunarparadigma þar sem forritalýsingin er aðskilin frá útreikningunum.
Hér er tómt.“Með einföldum orðum er virkniforritun a hugbúnaðarþróun stíll sem leggur mikla áherslu á notkun fallanna”
Útdrættir úr bókinni: Luis Atencio “Hagnýt forritun í JavaScript. Hvernig á að bæta þitt JavaScript forrit sem nota virknilausnir”
Hagnýt forritun er flokkað sem yfirlýsingarlegur fyrirmynd þar sem lýsing á forritinu er aðskilin frá útreikningunum. Áherslan hér er á notkun tjáninga til að lýsa forritalógík. Þetta er gagnstætt við boðháttur forritun, þar sem kóði er framkvæmt skref fyrir skref og segir tölvunni nákvæmlega hvernig á að ljúka verkinu.
Íhugaðu tilvik þar sem við höfum fylki af heilu tölu og þurfum að hækka hverja tölu í annan vöxt og síðan velja aðeins þær gildi sem eru ekki jafntölur.
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const results = []
for(let i = 0; i < numbers.length; i++) {
const secondPower = Math.pow(numbers[i], 2)
if(secondPower & 1) { // eða % 2 en bitareikningar eru hraðari
results.push(secondPower);
}
}
console.log(results) // [1, 9, 25, 49, 81]
Varðandi boðháttur Í lausninni er áherslan á framkvæmdaráðstafanir greinilega sýnileg. Í lykkjunni má sjá fylkisvísitölu sem byggir á þörfinni til að stjórna fjölda þátta. Vegna mikils fjölda smáatriða í kóðanum er erfiðara að einbeita sér að því hvað hann er að gera. Leyfðu okkur nú einbeittu þér að yfirlýsingarlegur lausn.
const risesToSecondPower = (num) => Math.pow(num, 2)
const isOdd = (num) => num & 1;
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
const results = numbers
.map(risesToSecondPower)
.filter(isOdd);
console.log(results) // [1, 9, 25, 49, 81]
Í þessari lausn hefur framkvæmdin verið aðskilin frá kölluninni með því að færa skynseminni í aðskilda aðgerðir. Þökk sé þessari lausn getum við einbeitt okkur eingöngu að nöfnum aðgerða sem lýsa því sem þar fer fram. Að auki hefur abstraktstigið verið hækkað og skynsemin er nú endurnýtanleg. Nú skulum við einbeita okkur að kölluninni. Þú sérð engin smáatriði í henni, aðeins lýsingu sem segir þér hvað þessi kóði gerir skref fyrir skref:
kort(rísirTilÖnnurKrafts) – taka hvern þátt í fylki og hækka hann í annan vöxt,síu(isOdd) – síuðu og veldu oddatölur.Hagnýt forritun er með marga kosti. Þegar kemur að JavaScript, Í þessu forritunarmáli er notkun fallagerða eðlileg, því málið er fallabundið. Jafnvel klasarnir í þessu forritunarmáli eru “syntactic sugar” og eru í raun samsettir úr fallagerðum.
Þegar kemur að læsileika, í imperative nálgun, verður kóðinn yfirleitt að lista yfir fallanöfn sem hægt er að lesa í röð án þess að kafa ofan í rökfræði þeirra. Afleiðingin er sú að við einbeitum okkur ekki að innleiðingarsérstöku.
Annað kostur er að halda sig við venju óbreytanlegra hluta. Þökk sé þessari nálgun verður kóðinn öruggari vegna þess að vísanir í JavaScript eru mjög sterk og það er auðvelt að breyta óæskilegum hlut.
Í virkniforritun er kóðinn sundurgreindur í smáa fall sem auðvelt er að hugsa sem endurnýtanlegan abstraktkóða.
Eitt af mikilvægu atriðunum í virkniforritun eru hreinar fall. Til að búa til slíkt fall þarftu að muna nokkur reglur:
// Hreinn fall
let counter = 5...
const multipleCounter = (multiplier) => {
counter = counter * multiplier
}
multiplyCounter(2) // -> ? niðurstaðan fer eftir upphafsgildinu
// Hreinn fall
const multiplyBy = (multiplier) => (value) => value * multiplier
const multipleByTwo = multiplyBy(2)
const counter = multipleByTwo(5) // -> 10
Fyrsta fallið er ófyrirsjáanlegt vegna þess að það fer eftir ytri breytu sem getur breyst. Annað fallið er gagnsætt, það fer eingöngu eftir inntaksbreytum, breytir þeim ekki og notar ekki breytur utan gildissviðs. Það er gagnsætt vegna þess að það fer eftir breytum, breytir þeim ekki, notar ekki breytur utan gildissviðs og skilar nýju gildi.
