Miks on kasulik rattaid vÀlja mÔelda

Miks on kasulik rattaid vÀlja mÔelda

Hiljuti korraldasin intervjueerimise JavaScript arendajaga, kes kandideeris vanema positsioonile. Kaaslane, kes samuti ajaloos kohal viibis, palus kandidaadil kirjutada funktsioon, mis teeks HTTP pÀringu ja probleemide korral prooviks mitu korda uuesti.

Ta kirjutas koodi kohe tahvlile, seetĂ”ttu oleks olnud piisav joonistada midagi umbkaudu. Kui ta oleks lihtsalt nĂ€idanud, et mĂ”istab hĂ€sti, mille poolest tegu, oleksime rahul olnud. Kuid kahjuks tal ei Ă”nnestunud leida head lahendust. Siis, olles seda nĂ€rvilisusega ette heitnud, otsustasime veidi ĂŒlesannet lihtsustada ja palusime tal muuta tagasisidefunktsioon promisse kasutavaks funktsiooniks.

Kahjuks. Jah, oli ilmne, et selline kood oli talle varem tuntud. Ta teadis ĂŒldiselt, kuidas see kĂ”ik toimib. Meile oleks piisanud lahenduse visandist, mis nĂ€itas arusaamist kontseptsioonist. Kuid kood, mille kandidaat tahvlile kirjutas, oli tĂ€ielik mĂ”ttetuseks. Tal oli vĂ€ga udune arusaam sellest, mis on JavaScriptis promissid ning ta ei osanud hĂ€sti selgitada, miks need vajalikud on. Junior arendaja puhul oleks see veel aktsepteeritav, kuid vanema positsioonile ta ei sobinud. Kuidas suudaks see arendaja lahendada vigu keerulises promisside ahelas ja selgitada teistele, mida tĂ€pselt ta tegi?

Arendajad peavad valmis koodi enesestmÔistetavaks.

Arendusprotsessis puutume pidevalt kokku korduvate materjalidega. Me jagame koodifragmente, et ei peaks neid iga kord uuesti kirjutama. Seega, keskendudes kĂ”ikidele pĂ”hiosadele, vaatame valmis koodi, millega töötame, kui midagi enesestmĂ”istetavat – me lihtsalt eeldame, et see töötab nagu peab.

Ja tavaliselt see tĂ”epoolest töötab, kuid kui tekivad probleemid, tasub aru saada selle mehhanismist ĂŒle mĂ”istmise.

Nii arvas meie kandidaat vanema arendaja positsioonile, et promise objektid on enesestmĂ”istetavad. TĂ”enĂ€oliselt oskas ta ette kujutada, kuidas nendega hallata, kui need ilmuvad kuskil vĂ€liskoodis, kuid ta ei mĂ”istnud ĂŒldpĂ”himĂ”tet ja ei suutnud seda ise intervjuul korrata. VĂ”ib-olla oli ta mingit fragmenti meelde jĂ€tnud – see pole sugugi keeruline:

return new Promise((resolve, reject) => {
  functionWithCallback((err, result) => {
   return err ? reject(err) : resolve(result);
  });
});

Mina ka tegin – me kĂ”ik oleme tĂ”enĂ€oliselt kunagi nii teinud. Lihtsalt Ă”ppisime koodi osa peast, et hiljem seda töös kasutada, omamata ĂŒldiselt aimu, kuidas kĂ”ik tegelikult töötab. Kuid kui arendaja oleks tĂ”eliselt mĂ”istnud kontseptsiooni, ei oleks tal olnud midagi meelde jĂ€tta – ta oleks lihtsalt teadnud, kuidas seda teha, ja oleks muretult kĂ”ik vajaliku koodis taastanud.

Pöörduge allikate poole

2012. aastal, mil esimesed front-end raamistikud ei olnud veel populaarsust kogunud, valitses maailmas jQuery ja ma lugesin raamatut Secrets of the JavaScript Ninja, mille autoriks oli John Resig, jQuery looja.

Raamat Ă”petab lugema, kuidas luua oma jQuery nullist ja annab ainulaadse vĂ”imaluse tutvuda mĂ”tlemise kĂ€iguga, mis viis raamatukogu loomisele. Viimastel aastatel on jQuery kaotanud oma endise populaarsuse, kuid ma soovitan raamatut siiski vĂ€ga. Mis mind enim veretavalt ĂŒllatas – oli pĂŒsiv tunne, et oleksin vĂ”inud ise sellele jĂ€reldusele tulla. Autor kirjeldatud sammud tundusid nii loogilised ja arusaadavad, et mul oli tĂ”siselt tunne, nagu saaksin kergesti jQuery luua, kui vaid asjaga pihta hakkaksin.

Muidugi, reaalsuses ma ei oleks midagi sellist suurt osanud – oleksin arvanud, et see on ĂŒletamatult keeruline. Omandatud lahendused tunduksid mulle liiga lihtsate ja naiivsetena, et töötada, ja ma oleksin kĂ€ed alla lasknud. Ma oleksin pidanud jQuery'd iseenesestmĂ”istetavaks asjaks, mille korrektsesse toimimisse tuleb lihtsalt pimesi uskuda. Edasi ei oleks ma ilmselt raisanud aega, et lĂ€heneda selle raamatukogu mehhanikale, vaid oleksin lihtsalt kasutanud seda musta kasti moodi.

Kuid see raamat tegi minust teise inimese. Hakkasin sĂŒvenema lĂ€htekoodi ja avastasin, et paljude lahenduste rakendamine on tegelikult vĂ€ga transparantne, isegi ilmne. Ei, muidugi, ise sarnasele tasemele jĂ”udmine on juba hoopis teine lugu. Kuid just teiste koodi uurimine ja juba olemasolevate lahenduste taastamine aitab meil midagi uut vĂ€lja mĂ”elda.

Inspireerige end ja mÀrkige mustreid, mis teid arendajana muudavad. Te avastate, et see suurepÀrane teekogu, mida te pidevalt kasutate ja milles te olete harjunud mÔtlema kui maagilises artefaktis, ei toimi mitte maagia, vaid lihtsalt lahendab probleemi nutikalt ja lakooniliselt.

MĂ”nikord tuleb koodiga vaeva nĂ€ha, liigendades seda samm-sammult, kuid just nii, edasi liikudes vĂ€ikeste jĂ€rkjĂ€rgsete sammudega, suudate te autori teed lahenduse leidmisel jĂ€ljendada. See vĂ”imaldab teil sĂŒgavamalt sĂŒveneda koodikirjutamise protsessi ja suurendab teie enesekindlust oma lahenduste otsimisel.

Kui ma alles hakkasin promesse kasutama, tundus, et see on puhas maagia. SeejÀrel sain ma teada, et nende aluseks on samad tagasisidekutsed, ja minu arendaja maailm pöördus pea peale. See tÀhendab, et muster, mille eesmÀrk on vabastada meid tagasisidekutsest, rakendub ise tagasisidekutsede abil?!

See aitas mul vaadata asju teise nurga alt ja mĂ”ista, et minu ees ei ole mĂ”ningaid arusaamatuid kooditĂŒkke, mille ÀÀrmiselt keerulist olemust ma kunagi ei mĂ”ista. Need on lihtsalt mustrid, milles on lihtne orienteeruda, kui vaid on piisavalt uudishimu ja sĂŒvenemist. Just niimoodi Ă”petavad inimesed end programmeerima ja kasvavad arendajatena.

Leiutage see ratta uuesti

Seega leiutage rattaid julgelt uuesti: kirjutage ise kood andmete sidumiseks, looge kodune promiss vÔi isegi tehke oma kÀtega lahendus olekute haldamiseks.
Pole tĂ€htis, et keegi nendele kunagi ei kasuta – oluline on, et nĂŒĂŒd oskate te seda. Ja kui teil on hiljem vĂ”imalus neid saavutusi oma projektides kasutada, siis on see tĂ”eliselt suurepĂ€rane. Saate neid arendada ja Ă”ppida veel rohkem.

Siin ei ole mÔte saata oma koodi tootmisse, vaid Ôppida midagi uut. OmakÀeliselt olemasoleva lahenduse rakendamine on suurepÀrane viis Ôppida parimatelt arendajatelt ja selle kaudu oma oskusi arendada.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster