Paisteáil Mhoncaí i dTeangacha Clárúcháin Dinimiciúla: Sampla JavaScript

Javascript
ríomhchlárú dinimiciúil
Paisteáil Mhoncaí i dTeangacha Ríomhchlárúcháin Dinimiciúla cover image

Réamhrá

Déanfaidh an t-alt seo iniúchadh ar choincheapa na dteangacha ríomhchlárúcháin Dinimiciúla agus Statach, na príomhdhifríochtaí idir an dá cheann, agus cad a sholáthraíonn gach paraidím i dtéarmaí buntáistí agus gaistí. Díreoidh an t-iniúchadh seo ar theangacha dinimiciúil ríomhchlárúcháin, go háirithe ceann de na patrúin riachtanacha a chumasaíonn sé: Monkey Patch, taispeánfar an patrún seo le cabhair ó shampla in JavaScript.

Teangacha Ríomhchláraithe Dinimiciúla vs Statach

Téarmaíocht

Chun tuiscint a fháil ar cad is teanga dhinimiciúil nó teanga statach ann, ní mór dúinn tuiscint a fháil ar roinnt príomhthéarmaí a úsáidtear go coitianta sa chomhthéacs seo: Am le chéile, Am rite, agus *Cineál seiceáil *.

Is dhá théarma iad Tiomsú agus Am Rite a fhreagraíonn do chéimeanna éagsúla i saolré cláir ríomhaire, ag tosú le ham Tiomsú.

Am Tiomsaithe

Is é an t-am tiomsaithe an chéad chéim i saolré cláir. Scríobhann forbróir cód i dteanga ríomhchlárúcháin ar leith. Níos minice ná a mhalairt, ní bhíonn an meaisín in ann an cód atá scríofa i dteanga ardleibhéil a thuiscint agus mar sin baintear úsáid as tiomsaitheoir tiomnaithe chun é a aistriú go formáid idirmheánach ag leibhéal níos ísle a bheidh réidh le cur i gcrích.

Am rite

Cuimsíonn am rite dhá chéim de ghnáth: an clár a luchtú i gcuimhne trí na hacmhainní is gá chun é a chur i gcrích a leithdháileadh mar aon lena threoracha, agus ansin an clár a chur i gcrích de réir ord na dtreoracha sin.

Léiríonn an léaráid seo a leanas an próiseas seo:

Cineál Seiceáil

Gné ionsuite is ea seiceáil cineáil i mbeagnach gach teanga ríomhchlárúcháin. Is é an cumas a sheiceáil an gcomhfhreagraíonn luach a shanntar d'athróg ar leith don chineál ceart den athróg sin. Tá bealach difriúil ag gach teanga ríomhchlárúcháin chun luach de chineál áirithe a léiriú i gcuimhne. Fágann na huiríll éagsúla seo gur féidir an comhfhreagras idir an cineál luacha agus an cineál athróige a ndéanann tú iarracht an luach sin a shannadh dó a sheiceáil.

Anois go bhfuil tuiscint ardleibhéil againn ar shaolré cláir agus seiceáil cineál, is féidir linn dul ar aghaidh chun teangacha cláir statacha a iniúchadh.

Teangacha Cláraithe Statach

Clárú Statach Teangacha, ar a dtugtar freisin mar theangacha clóscríofa go statach, is teangacha iad a chuireann an seiceáil cineáil i bhfeidhm a luaigh muid ag céim an tiomsaithe. Ciallaíonn sé seo go héifeachtach go gcoimeádann athróg a cineál ó dhearbhú agus ní féidir aon luach a shannadh dó seachas luachanna óna cineál dearbhaithe. Cuireann teangacha ríomhchlárúcháin statacha sábháilteacht bhreise ar fáil agus iad ag déileáil le cineálacha ach féadann siad moill a chur ar an bpróiseas forbartha i gcásanna úsáide áirithe nuair a bhíonn srian docht air.

Teangacha Ríomhchláraithe Dinimiciúla

Ar an taobh eile, cuirtear seiceáil cineáil i bhfeidhm ag am rite. Ciallaíonn sé seo gur féidir le haon athróg aon luach a choinneáil ag pointe ar bith sa chlár. Féadfaidh sé seo a bheith tairbheach mar go dtugann sé leibhéal solúbthachta don fhorbróir nach bhfuil i láthair sna teangacha statacha. Is gnách go mbíonn teangacha dinimiciúla ag feidhmiú níos moille ná a gcomhghleacaithe statacha toisc go bhfuil céim bhreise i gceist leo chun clóscríobh gach athróige a dhéanamh amach go dinimiciúil.

Paiste Moncaí

Tréith bhunúsach i dteanga ríomhchlárúcháin is ea Clóscríobh Statach vs Dinimiciúla, agus má théann paraidím amháin thar an gceann eile is féidir go leor patrúin agus cleachtais éagsúla a chumasú ar féidir leo cáilíocht agus luas na forbartha a fheabhsú go suntasach. Is féidir leis an doras a oscailt freisin do go leor teorainneacha agus frith-patrúin mura ndéantar aon bhreithnithe cúramach agus cinntí deartha á ndéanamh.

Go háirithe, is eol go dtugann teangacha ríomhchlárúcháin atá clóscríofa go dinimiciúil leibhéal níos airde solúbthachta ós rud é nach gcuireann siad srian ar athróg d’aon chineál amháin. Tagann an tsolúbthacht seo le costas freagrachta breise ar an bhforbróir agus cláir á gcur i bhfeidhm agus á ndífhabhtú chun a chinntiú nach dtarlóidh aon iompar dothuartha. Tagann an patrún paiste moncaí ón bhfealsúnacht seo.

Tagraíonn Monkey Patch don phróiseas chun oibriú comhpháirte a leathnú/a athrú ag am rite. Féadfaidh leabharlann, rang, modh, nó fiú modúl a bheith sa chomhpháirt atá i gceist. Is é an smaoineamh mar an gcéanna: déantar píosa cód chun tasc áirithe a chur i gcrích, agus is é an sprioc a bhaineann le paiste moncaí ná iompar an phíosa cód sin a athrú nó a leathnú ionas go gcomhlíonfaidh sé tasc nua, ar fad gan an cód féin a athrú. .

Tá sé seo indéanta i dteanga ríomhchlárúcháin dhinimiciúil ós rud é is cuma cén cineál comhpháirte a bhfuilimid ag déileáil leis, tá an struchtúr céanna réada aige fós le tréithe éagsúla, is féidir leis na tréithe modhanna a shealbhú ar féidir iad a athshannadh chun iompar nua a bhaint amach sa réad gan dul isteach ina chuid inmheánach agus sonraí cur chun feidhme. Éiríonn sé seo thar a bheith úsáideach i gcás leabharlanna agus modúil tríú páirtí mar is minic a bhíonn sé níos deacra iad sin a leasú.

Taispeánfaidh an sampla seo a leanas cás úsáide coitianta ar féidir leas a bhaint as an teicníc paiste moncaí a úsáid. Baineadh úsáid as Javascript ar mhaithe le cur i bhfeidhm anseo ach ba cheart go mbainfeadh sé seo go ginearálta le haon teanga ríomhchlárúcháin dhinimiciúil eile.

Sampla

Creat Tástála Íosta a chur i bhfeidhm le Modúl HTTP Dúchasach Nód

Is féidir le tástáil aonaid agus comhtháthaithe titim faoi chásanna úsáide paistí moncaí. Is gnách go mbíonn cásanna tástála i gceist leo a théann thar níos mó ná seirbhís amháin le haghaidh tástála comhtháthaithe, nó spleáchais API agus/nó bunachar sonraí le haghaidh tástála aonaid. Sa dá chás seo, agus chun na spriocanna tástála a bhaint amach ar an gcéad dul síos ba mhaith linn go mbeadh ár dtástálacha neamhspleách ar na hacmhainní seachtracha seo. Is é an bealach chun é seo a bhaint amach ná magadh. Tá magadh ag ionsamhladh iompar seirbhísí seachtracha ionas gur féidir leis an tástáil díriú ar loighic iarbhír an chóid. Is féidir le paiste moncaí a bheith ina chuidiú anseo toisc gur féidir leis modhanna na seirbhísí seachtracha a mhodhnú trí mhodhanna sealbhóirí áit a dtugtar “stub” orthu a chur ina n-áit. Tugann na modhanna seo an toradh ionchais sna cásanna tástála ar ais ionas gur féidir linn iarratais ar sheirbhísí táirgeachta a thionscnamh ar mhaithe le tástálacha a sheachaint.

Is é an sampla seo a leanas ná cur i bhfeidhm simplí de phaisteáil moncaí ar mhodúl http dúchais NodeJs. Is é an modúl http an comhéadan a chuireann modhanna prótacail http i bhfeidhm do NodeJs. Úsáidtear go príomha é chun freastalaithe http lomnochta a chruthú agus cumarsáid a dhéanamh le seirbhísí seachtracha ag baint úsáide as an bprótacal http.

Sa sampla thíos tá cás tástála simplí againn ina dtugaimid glao ar sheirbhís sheachtrach chun liosta aitheantais úsáideora a fháil. Seachas glaoch a chur ar an tseirbhís iarbhír déanaimid an modh http get a phasáil ionas nach dtugann sé ach an toradh a bhfuiltear ag súil leis, arb é atá ann sraith aitheantais úsáideora randamach. Seans nach bhfuil an chuma ar an scéal nach bhfuil tábhacht mhór leis seo toisc nach bhfuilimid ach ag fáil sonraí ach má chuirimid cás tástála eile i bhfeidhm a bhaineann le sonraí de chineál éigin a athrú, d’fhéadfaimis sonraí ar tháirgeadh a athrú trí thimpiste agus tástálacha á rith.

Ar an mbealach seo is féidir linn ár bhfeidhmiúlachtaí a chur i bhfeidhm, agus tástálacha a scríobh do gach feidhmiúlacht agus sábháilteacht ár seirbhísí táirgeachta a chinntiú.

// import the http module
let http = require("http");

// patch the get method of the http module
http.get = async function(url) {
  return {
    data: ["1234", "1235", "1236", "1236"]
  };
}

// example test suite, call new patched get method for testing
test('get array of user ids from users api', async () => {
  const res = await http.get("https://users.api.com/ids");
  const userIds = res.data;
  expect(userIds).toBeDefined();
  expect(userIds.length).toBe(4);
  expect(userIds[0]).toBe("1234");
});

Tá an cód thuas simplí, iompórtálann muid an modúl http, athshannaimid an modh http.get le modh nua a thugann raon aitheantais ar ais. Anois tugaimid an modh paiste nua taobh istigh den chás tástála agus faighimid an toradh ionchais nua.

~/SphericalTartWorker$ npm test

> nodejs@1.0.0 test
> jest

PASS  ./index.test.js
  ✓ get array of user ids from users api (25 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        0.977 s, estimated 2 s
Ran all test suites.

Gaistí agus Teorainneacha Coitianta

Níor cheart go gcuirfeadh sé iontas ar bith go bhfuil a lochtanna agus a teorainneacha féin ag baint le paistí moncaí. I gcomhthéacs modúil sa chóras modúl nóid, meastar gur oibríocht le fo-iarmhairtí é paiste a dhéanamh ar mhodúl domhanda ar nós http, is é sin toisc go bhfuil http inrochtana ó aon phointe laistigh den bhunachar cód agus d’fhéadfadh aon eintiteas eile a bheith ag brath air. Tá na haonáin seo ag súil go n-oibreoidh an modúl http ina ghnáth-iompraíocht, trí athrú a dhéanamh ar cheann de na modhanna http, briseann muid gach spleáchas http eile taobh istigh den bhunachar cód.

Ós rud é go bhfuilimid ag feidhmiú laistigh de theanga chlóscríofa go dinimiciúil, b'fhéidir nach dteipfeadh ar rudaí láithreach agus b'fhearr le hiompar dothuartha a dhéanamh, rud a fhágann gur tasc an-chasta é dífhabhtú. I gcásanna úsáide eile, d'fhéadfadh go mbeadh dhá phaistí éagsúla den chomhpháirt chéanna ar an tréith chéanna, agus sa chás sin ní féidir linn a thuar i ndáiríre cén paiste a gheobhaidh tosaíocht thar an gceann eile agus beidh cód níos dothuartha fós mar thoradh air.

Tá sé tábhachtach a lua freisin go bhféadfadh éagsúlachtaí beaga a bheith ag baint le paiste moncaí in iompar idir teangacha ríomhchlárúcháin éagsúla. Braitheann sé go léir ar an dearadh teanga agus ar na roghanna feidhmiúcháin. Mar shampla, i python, ní dhéanfaidh an paiste difear do gach cás a úsáideann modh paiste. Má ghlaonn cás go sainráite ar an modh paiste, gheobhaidh sé an leagan nuashonraithe nua, a mhalairt ar fad, gheobhaidh cásanna eile nach bhfuil ach tréithe acu atá dírithe ar an modh paiste agus nach nglaotar go sainráite air, gheobhaidh sé an bunleagan, tá sé seo mar gheall ar conas python feidhmíonn ceangailteach i ranganna.

Conclúid

San alt seo rinneamar iniúchadh ar na hidirdhealuithe ardleibhéil idir teangacha ríomhchlárúcháin statacha agus dinimiciúla, chonaiceamar conas is féidir le teangacha ríomhchlárúcháin dinimiciúla leas a bhaint as paraidímí agus patrúin nua a ghiaráil na solúbthachta dúchasach a chuireann na teangacha seo ar fáil. Bhain an sampla a léirigh muid le paistí moncaí, teicníocht a úsáidtear chun iompar an chóid a leathnú gan é a athrú ón bhfoinse. Chonaiceamar cás ina mbeadh sé tairbheach an teicníc seo a úsáid mar aon leis na míbhuntáistí a d’fhéadfadh a bheith ann. Is éard atá i gceist le forbairt bogearraí ná malairtí, agus teastaíonn breithniúcháin ilchasta ón bhforbróir agus tuiscint mhaith ar phrionsabail agus ar bhunghnéithe na hailtireachta chun an réiteach ceart a úsáid don fhadhb.


Career Services background pattern

Seirbhísí Gairme

Contact Section background image

Bígí i dteagmháil

Code Labs Academy © 2024 Gach ceart ar cosaint.