Bakit kapaki-pakinabang na muling likhain ang gulong?

Bakit kapaki-pakinabang na muling likhain ang gulong?

Noong isang araw ay nakapanayam ko ang isang developer ng JavaScript na nag-aaplay para sa isang senior na posisyon. Ang isang kasamahan, na naroroon din sa panayam, ay humiling sa kandidato na magsulat ng isang function na gagawa ng isang kahilingan sa HTTP at, kung hindi matagumpay, muling subukan nang maraming beses.

Direkta niyang isinulat ang code sa pisara, kaya sapat na upang gumuhit ng tinatayang bagay. Kung ipinakita lang niya na naiintindihan niyang mabuti kung ano ang bagay na iyon, magiging kontento na kami. Ngunit, sa kasamaang-palad, hindi siya nakahanap ng matagumpay na solusyon. Pagkatapos, kami, ayon sa pananabik, ay nagpasya na gawing mas madali ang gawain at hiniling sa kanya na gawing function ang isang function na may mga callback sa isang function na binuo sa mga pangako.

Pero sayang. Oo, halatang naka-encounter na siya ng ganoong code dati. Alam niya sa pangkalahatan kung paano gumagana ang lahat doon. Ang kailangan lang natin ay isang sketch ng isang solusyon na nagpapakita ng pag-unawa sa konsepto. Gayunpaman, ang code na isinulat ng kandidato sa board ay ganap na walang kapararakan. Siya ay may napakalabing ideya kung anong mga pangako ang nasa JavaScript at hindi niya talaga maipaliwanag kung bakit kailangan ang mga ito. Para sa isang junior ito ay mapapatawad, ngunit hindi na siya nababagay sa posisyon ng isang senior. Paano magagawa ng developer na ito na ayusin ang mga bug sa isang kumplikadong hanay ng mga pangako at ipaliwanag sa iba kung ano ang eksaktong ginawa niya?

Itinuturing ng mga developer na maliwanag na ang yari na code

Sa panahon ng proseso ng pagbuo, palagi kaming nakakaharap ng mga reproducible na materyales. Naglilipat kami ng mga fragment ng code nang sa gayon ay hindi namin kailangang muling isulat ang mga ito sa bawat pagkakataon. Alinsunod dito, sa pamamagitan ng pagtutuon ng lahat ng aming pansin sa mga pangunahing bahagi, tinitingnan namin ang natapos na code na pinagtatrabahuhan namin bilang isang bagay na maliwanag - ipinapalagay namin na ang lahat ay gagana ayon sa nararapat.

At kadalasan ito ay gumagana, ngunit kapag ang mga bagay ay nagiging nakakalito, ang pag-unawa sa mekanika ay higit pa sa nagbabayad.

Kaya, ang aming kandidato para sa posisyon ng senior developer ay itinuturing na mga bagay na pangako na maging maliwanag. Marahil ay may ideya siya kung paano haharapin ang mga ito kapag nangyari ang mga ito sa isang lugar sa code ng ibang tao, ngunit hindi niya naiintindihan ang pangkalahatang prinsipyo at hindi niya ito maulit sa panahon ng pakikipanayam. Marahil ay naalala niya ang fragment sa pamamagitan ng puso - hindi ito mahirap:

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

Ginawa ko rin ito - at malamang na nagawa na nating lahat sa isang punto. Kinabisado lang nila ang isang piraso ng code upang magamit nila ito sa ibang pagkakataon sa kanilang trabaho, habang mayroon lamang pangkalahatang ideya kung paano gumagana ang lahat doon. Ngunit kung tunay na nauunawaan ng developer ang konsepto, hindi na niya kailangang matandaan ang anuman - malalaman lang niya kung paano ito gagawin, at madaling i-reproduce ang lahat ng kailangan niya sa code.

Bumalik sa mga ugat

Noong 2012, nang ang pangingibabaw ng mga front-end na balangkas ay hindi pa naitatag, pinamunuan ng jQuery ang mundo, at binasa ko ang aklat Mga lihim ng JavaScript Ninja, na isinulat ni John Resig, tagalikha ng jQuery.

Ang libro ay nagtuturo sa mambabasa kung paano lumikha ng kanilang sariling jQuery mula sa simula at nagbibigay ng isang natatanging pananaw sa proseso ng pag-iisip na humantong sa paglikha ng library. Sa mga nagdaang taon, nawala ang dating kasikatan ng jQuery, ngunit lubos ko pa ring inirerekomenda ang aklat. Ang pinakanagulat sa akin tungkol sa kanya ay ang patuloy na pakiramdam na maaari kong isipin ang lahat ng ito sa aking sarili. Ang mga hakbang na inilarawan ng may-akda ay tila napaka-lohikal, napakalinaw na seryoso kong sinimulan na isipin na madali akong makakagawa ng jQuery kung pipilitin ko lang ito.

Siyempre, sa katotohanan ay hindi ko magagawa ang anumang bagay na tulad nito - napagpasyahan ko na ito ay hindi mabata na mahirap. Ang sarili kong mga solusyon ay tila napakasimple at walang muwang upang gumana, at susuko ako. Iuuri ko ang jQuery bilang mga bagay na maliwanag, sa tamang operasyon kung saan kailangan mo lamang na bulag na maniwala. Kasunod nito, halos hindi ako mag-aaksaya ng oras sa pagsasaliksik sa mga mekanika ng aklatang ito, ngunit gagamitin lamang ito bilang isang uri ng itim na kahon.

Ngunit ang pagbabasa ng aklat na ito ay naging dahilan upang ako ay maging ibang tao. Sinimulan kong basahin ang source code at natuklasan na ang pagpapatupad ng maraming solusyon ay sa katunayan ay napakalinaw, kahit na halata. Hindi, siyempre, ang mag-isip ng ganito sa sarili mo ay ibang kuwento. Ngunit ito ay pag-aaral ng code ng ibang tao at paggawa ng mga kasalukuyang solusyon na tumutulong sa amin na magkaroon ng sarili naming bagay.

Ang inspirasyong natamo mo at ang mga pattern na sinimulan mong mapansin ay magbabago sa iyo bilang isang developer. Malalaman mo na ang kahanga-hangang silid-aklatan na iyon na palagi mong ginagamit at nakasanayan mong isipin bilang isang mahiwagang artifact ay hindi gumagana sa mahika, ngunit nalulutas lamang ang isang problema nang walang kabuluhan at mapamaraan.

Minsan kailangan mong suriing mabuti ang code, pag-aralan ito nang sunud-sunod, ngunit ito ay kung paano, sa paglipat sa maliliit, pare-parehong mga hakbang, maaari mong ulitin ang landas ng may-akda patungo sa solusyon. Ito ay magbibigay-daan sa iyong sumisid nang mas malalim sa proseso ng coding at magbibigay sa iyo ng higit na kumpiyansa sa paggawa ng sarili mong mga solusyon.

Noong una akong nagsimulang magtrabaho sa mga pangako, para sa akin ay parang purong magic. Pagkatapos ay nalaman ko na ang mga ito ay batay sa parehong mga callback, at ang aking programming mundo ay bumaliktad. Kaya't ang pattern, ang layunin kung saan ay iligtas tayo mula sa mga callback, ay ipinatupad mismo gamit ang mga callback?!

Nakatulong ito sa akin na tingnan ang bagay na may iba't ibang mga mata at mapagtanto na ito ay hindi isang mahirap na piraso ng code sa harap ko, ang nagbabawal na pagiging kumplikado na hindi ko kailanman mauunawaan sa aking buhay. Ang mga ito ay mga pattern lamang na mauunawaan nang walang mga problema sa angkop na pag-usisa at malalim na paglulubog. Ito ay kung paano natututo ang mga tao na mag-code at lumago bilang mga developer.

Muling likhain ang gulong ito

Kaya't magpatuloy at muling likhain ang mga gulong: isulat ang iyong sariling data binding code, lumikha ng isang pangako sa bahay, o kahit na gumawa ng sarili mong solusyon sa pamamahala ng estado.
Hindi mahalaga na walang gagamit ng lahat ng ito - ngunit ngayon alam mo na kung paano ito gagawin. At kung mayroon kang pagkakataon na pagkatapos ay gumamit ng gayong mga pag-unlad sa iyong sariling mga proyekto, sa pangkalahatan ay mahusay iyon. Magagawa mong paunlarin ang mga ito at matutunan ang iba pa.

Ang punto dito ay hindi upang ipadala ang iyong code sa produksyon, ngunit upang matuto ng bago. Ang pagsulat ng iyong sariling pagpapatupad ng isang umiiral na solusyon ay isang mahusay na paraan upang matuto mula sa pinakamahusay na mga programmer at sa gayon ay mahasa ang iyong mga kasanayan.

Pinagmulan: www.habr.com

Magdagdag ng komento