Pam mae'n ddefnyddiol ailddyfeisio'r olwyn?

Pam mae'n ddefnyddiol ailddyfeisio'r olwyn?

Y diwrnod o'r blaen cyfwelais â datblygwr JavaScript a oedd yn gwneud cais am swydd uwch. Gofynnodd cydweithiwr, a oedd hefyd yn bresennol yn y cyfweliad, i'r ymgeisydd ysgrifennu swyddogaeth a fyddai'n gwneud cais HTTP ac, os yn aflwyddiannus, rhoi cynnig arall arni sawl gwaith.

Ysgrifennodd y cod yn uniongyrchol ar y bwrdd, felly byddai'n ddigon i lunio rhywbeth bras. Pe buasai wedi dangos yn syml ei fod yn deall yn dda beth oedd y mater, buasem yn eithaf boddlawn. Ond, yn anffodus, nid oedd yn gallu dod o hyd i ateb llwyddiannus. Yna fe benderfynon ni wneud y dasg ychydig yn haws a gofyn iddo droi swyddogaeth gyda galwadau'n ôl yn swyddogaeth sy'n seiliedig ar addewidion.

Ond gwaetha'r modd. Oedd, roedd yn amlwg ei fod wedi dod ar draws cod o'r fath o'r blaen. Roedd yn gwybod yn gyffredinol sut roedd popeth yn gweithio yno. Y cyfan sydd ei angen arnom yw braslun o ddatrysiad sy'n dangos dealltwriaeth o'r cysyniad. Fodd bynnag, nonsens llwyr oedd y cod a ysgrifennodd yr ymgeisydd ar y bwrdd. Roedd ganddo syniad niwlog iawn o ba addewidion oedd yn JavaScript ac ni allai egluro mewn gwirionedd pam roedd eu hangen. Ar gyfer iau byddai hyn wedi bod yn faddeuadwy, ond nid oedd bellach yn addas ar gyfer swydd uwch. Sut byddai'r datblygwr hwn yn gallu trwsio chwilod mewn cadwyn gymhleth o addewidion ac egluro i eraill beth yn union a wnaeth?

Mae datblygwyr yn ystyried cod parod yn hunan-amlwg

Yn ystod y broses ddatblygu, rydym yn dod ar draws deunyddiau atgenhedlu yn gyson. Rydyn ni'n trosglwyddo darnau o god fel nad oes rhaid i ni eu hailysgrifennu bob tro. Yn unol â hynny, trwy ganolbwyntio ein holl sylw ar y rhannau allweddol, rydym yn edrych ar y cod gorffenedig yr ydym yn gweithio ag ef fel rhywbeth hunan-amlwg - yn syml, rydym yn cymryd yn ganiataol y bydd popeth yn gweithio fel y dylai.

Ac fel arfer mae'n gweithio, ond pan fydd pethau'n mynd yn anodd, mae deall y mecaneg yn fwy nag sy'n talu ar ei ganfed.

Felly, roedd ein hymgeisydd ar gyfer swydd uwch ddatblygwr o'r farn bod amcanion yr addewid yn hunan-amlwg. Mae'n debyg bod ganddo syniad sut i ddelio â nhw pan fyddant yn digwydd yn rhywle yng nghod rhywun arall, ond nid oedd yn deall yr egwyddor gyffredinol ac ni allai ei ailadrodd ei hun yn ystod y cyfweliad. Efallai ei fod wedi cofio’r darn ar ei gof – nid yw mor anodd â hynny:

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

Fe wnes i hefyd - ac mae'n debyg ein bod ni i gyd wedi ei wneud ar ryw adeg. Yn syml, fe wnaethon nhw ddysgu darn o god ar y cof fel y gallent ei ddefnyddio yn ddiweddarach yn eu gwaith, tra dim ond cael syniad cyffredinol o sut roedd popeth yn gweithio yno. Ond pe bai'r datblygwr yn deall y cysyniad yn wirioneddol, ni fyddai'n rhaid iddo gofio unrhyw beth - byddai'n gwybod yn syml sut i'w wneud, a byddai'n hawdd atgynhyrchu popeth sydd ei angen arno yn y cod.

Ewch yn ôl at y gwreiddiau

Yn 2012, pan nad oedd goruchafiaeth fframweithiau pen blaen wedi'i sefydlu eto, roedd jQuery yn rheoli'r byd, a darllenais y llyfr Cyfrinachau'r JavaScript Ninja, wedi'i awduro gan John Resig, crëwr jQuery.

Mae'r llyfr yn dysgu'r darllenydd sut i greu eu jQuery eu hunain o'r dechrau ac yn rhoi cipolwg unigryw ar y broses feddwl a arweiniodd at greu'r llyfrgell. Yn y blynyddoedd diwethaf, mae jQuery wedi colli ei boblogrwydd blaenorol, ond rwy'n dal i argymell y llyfr yn fawr. Yr hyn a'm trawodd fwyaf amdani oedd y teimlad parhaus y gallwn fod wedi meddwl am hyn i gyd fy hun. Roedd y camau a ddisgrifiodd yr awdur yn ymddangos mor rhesymegol, mor glir fel y dechreuais feddwl o ddifrif y gallwn yn hawdd greu jQuery pe bawn i'n dod i lawr iddo.

Wrth gwrs, mewn gwirionedd ni fyddwn wedi gallu gwneud unrhyw beth fel hyn - byddwn wedi penderfynu ei fod yn annioddefol o anodd. Byddai fy atebion fy hun yn ymddangos yn rhy syml a naïf i weithio, a byddwn yn rhoi'r gorau iddi. Byddwn yn dosbarthu jQuery fel pethau hunan-amlwg, yn eu gweithrediad cywir does ond angen i chi gredu'n ddall. Yn dilyn hynny, prin y byddwn yn gwastraffu amser yn treiddio i fecaneg y llyfrgell hon, ond yn syml byddwn yn ei ddefnyddio fel rhyw fath o flwch du.

Ond roedd darllen y llyfr hwn yn fy ngwneud yn berson gwahanol. Dechreuais ddarllen y cod ffynhonnell a darganfod bod gweithredu llawer o atebion mewn gwirionedd yn dryloyw iawn, hyd yn oed yn amlwg. Na, wrth gwrs, mae meddwl am rywbeth fel hyn ar eich pen eich hun yn stori wahanol. Ond mae'n astudio cod pobl eraill ac yn atgynhyrchu atebion presennol sy'n ein helpu i feddwl am rywbeth ein hunain.

Bydd yr ysbrydoliaeth a gewch a'r patrymau y byddwch yn dechrau sylwi arnynt yn eich newid fel datblygwr. Fe welwch nad yw'r llyfrgell wych honno rydych chi'n ei defnyddio'n gyson ac yr ydych chi'n gyfarwydd â meddwl amdani fel arteffact hudol yn gweithio ar hud o gwbl, ond yn syml yn datrys problem yn laconig ac yn ddyfeisgar.

Weithiau bydd yn rhaid i chi bori dros y cod, gan ei ddadansoddi gam wrth gam, ond dyma sut, gan symud mewn camau bach, cyson, y gallwch chi ailadrodd llwybr yr awdur i'r datrysiad. Bydd hyn yn caniatáu ichi blymio'n ddyfnach i'r broses godio a rhoi mwy o hyder i chi wrth ddod o hyd i'ch atebion eich hun.

Pan ddechreuais weithio gydag addewidion am y tro cyntaf, roedd yn ymddangos i mi fel hud pur. Yna darganfyddais eu bod yn seiliedig ar yr un galwadau yn ôl, a bod fy myd rhaglennu yn troi wyneb i waered. Felly mae'r patrwm, sydd â'r pwrpas o'n hachub rhag galwadau yn ôl, yn cael ei weithredu ei hun gan ddefnyddio galwadau yn ôl?!

Fe wnaeth hyn fy helpu i edrych ar y mater gyda gwahanol lygaid a sylweddoli nad yw hwn yn ddarn o god abswiwt o'm blaen, na fyddaf byth yn amgyffred ei gymhlethdod gwaharddol yn fy mywyd. Dim ond patrymau yw'r rhain y gellir eu deall heb broblemau gyda chwilfrydedd dyladwy a throchi dwfn. Dyma sut mae pobl yn dysgu codio a thyfu fel datblygwyr.

Ailddyfeisio'r olwyn hon

Felly ewch ymlaen ac ailddyfeisio'r olwynion: ysgrifennwch eich cod rhwymo data eich hun, crëwch addewid cartref, neu hyd yn oed gwnewch eich datrysiad rheoli cyflwr eich hun.
Nid oes ots na fydd neb byth yn defnyddio hyn i gyd - ond nawr rydych chi'n gwybod sut i wneud hynny. Ac os cewch gyfle wedyn i ddefnyddio datblygiadau o'r fath yn eich prosiectau eich hun, yna mae hynny'n wych ar y cyfan. Byddwch yn gallu eu datblygu a dysgu rhywbeth arall.

Nid anfon eich cod i gynhyrchu yw'r pwynt yma, ond i ddysgu rhywbeth newydd. Mae ysgrifennu eich gweithrediad eich hun o ddatrysiad presennol yn ffordd wych o ddysgu gan y rhaglenwyr gorau a thrwy hynny hogi'ch sgiliau.

Ffynhonnell: hab.com

Ychwanegu sylw