Poukisa li itil pou reenvante wou yo?

Poukisa li itil pou reenvante wou yo?

Lòt jou a, mwen te fè entèvyou ak yon pwomotè JavaScript ki te aplike pou yon pozisyon wo grade. Yon kòlèg, ki te prezan tou nan entèvyou a, te mande kandida a ekri yon fonksyon ki ta fè yon demann HTTP epi, si li pa reyisi, reesye plizyè fwa.

Li te ekri kòd la dirèkteman sou tablo a, kidonk li ta ase yo desine yon bagay apwoksimatif. Si li te tou senpleman montre ke li te byen konprann ki sa pwoblèm nan te, nou ta byen satisfè. Men, malerezman, li pa t 'kapab jwenn yon solisyon siksè. Lè sa a, nou, chalking li jiska eksitasyon, deside fè travay la yon ti kras pi fasil epi li mande l 'yo vire yon fonksyon ak callbacks nan yon fonksyon bati sou pwomès.

Men, malè. Wi, li te evidan ke li te rankontre kòd sa a anvan. Li te konnen an tèm jeneral ki jan tout bagay te travay la. Tout sa nou bezwen se yon chema yon solisyon ki demontre yon konpreyansyon sou konsèp la. Sepandan, kòd ke kandida a te ekri sou tablo a te yon istwa san sans. Li te gen yon lide trè vag sou sa ki pwomès yo te nan JavaScript epi li pa t 'kapab reyèlman eksplike poukisa yo te bezwen. Pou yon jinyò sa a ta ka padone, men li pa t 'ankò adapte nan pozisyon nan yon ansyen. Ki jan pwomotè sa a ta ka ranje pinèz nan yon chèn konplèks nan pwomès epi eksplike lòt moun ki sa egzakteman li te fè?

Devlopè yo konsidere kòd pare yo klè poukont yo

Pandan pwosesis devlopman, nou toujou ap rankontre materyèl repwodiktif. Nou transfere fragman kòd pou nou pa oblije re-ekri yo chak fwa. An konsekans, lè nou konsantre tout atansyon nou sou pati kle yo, nou gade nan kòd la fini nou travay ak kòm yon bagay ki evidan - nou tou senpleman sipoze ke tout bagay pral travay jan li ta dwe.

Epi anjeneral li travay, men lè bagay yo vin difisil, konprann mekanik yo plis pase peye.

Kidonk, kandida nou an pou pozisyon nan pwomotè ansyen konsidere kòm objè pwomès yo dwe evidan. Li pwobableman te gen yon lide sou fason pou fè fas ak yo lè yo rive yon kote nan kòd yon lòt moun, men li pa t 'konprann prensip jeneral la epi li pa t' kapab repete li tèt li pandan entèvyou a. Petèt li te memorize fragman an pa kè - li pa tèlman difisil:

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

Mwen te fè li tou - e nou te pwobableman tout fè li nan kèk pwen. Yo senpleman memorize yon moso kòd pou yo ka pita itilize li nan travay yo, pandan y ap sèlman gen yon lide jeneral sou ki jan tout bagay te travay la. Men, si pwomotè a vrèman konprann konsèp la, li pa ta dwe sonje anyen - li ta tou senpleman konnen ki jan fè li, epi li ta fasil repwodui tout sa li bezwen nan kòd.

Tounen nan rasin yo

An 2012, lè dominasyon an nan kad front-end pa t 'ankò te etabli, jQuery te dirije mond lan, epi mwen li liv la. Sekrè nan JavaScript Ninja la, otè pa John Resig, kreyatè jQuery.

Liv la anseye lektè a ki jan yo kreye pwòp jQuery yo nan grate epi li bay yon insight inik nan pwosesis la panse ki te mennen nan kreyasyon bibliyotèk la. Nan dènye ane yo, jQuery te pèdi ansyen popilarite li, men mwen toujou trè rekòmande liv la. Sa ki te frape m pi plis nan li se santiman ki pèsistan ke mwen te kapab panse a tout bagay sa yo tèt mwen. Etap yo ke otè a te dekri te sanble tèlman lojik, tèlman klè ke mwen seryezman te kòmanse panse ke mwen ta ka fasilman kreye jQuery si mwen jis te desann nan li.

Natirèlman, an reyalite mwen pa ta kapab fè anyen tankou sa a - mwen ta deside ke li te ensipòtab difisil. Solisyon pwòp mwen yo ta sanble twò senp ak nayif nan travay, epi mwen ta bay moute. Mwen ta klase jQuery kòm bagay ki evidan, nan operasyon ki kòrèk la nan ki ou jis bezwen avèg kwè. Imedyatman, mwen ta diman pèdi tan fouye nan mekanik yo nan bibliyotèk sa a, men ta tou senpleman itilize li kòm yon kalite bwat nwa.

Men, lekti liv sa a fè m 'yon moun diferan. Mwen te kòmanse li kòd sous la ak dekouvri ke aplikasyon an nan solisyon anpil te an reyalite trè transparan, menm evidan. Non, nan kou, vini ak yon bagay tankou sa a tèt ou se yon istwa diferan. Men, se etidye kòd lòt moun ak repwodui solisyon ki egziste deja ki ede nou vini ak yon bagay ki pa nou.

Enspirasyon ou jwenn ak modèl ou kòmanse remake pral chanje ou kòm yon pwomotè. Ou pral jwenn ke bibliyotèk sa a bèl bagay ke ou toujou ap itilize epi ki ou yo abitye panse a kòm yon zafè majik pa travay sou majik nan tout, men tou senpleman rezoud yon pwoblèm lakonik ak resous.

Pafwa ou pral oblije analize kòd la etap pa etap, men sa a se ki jan, deplase nan ti etap ki konsistan, ou ka repete chemen otè a nan solisyon an. Sa a pral pèmèt ou plonje pi fon nan pwosesis la kodaj epi ba ou plis konfyans nan vini ak pwòp solisyon ou yo.

Lè mwen te kòmanse travay ak pwomès, li te sanble ak maji pi bon kalite. Lè sa a, mwen te jwenn ke yo te baze sou callbacks yo menm, ak mond pwogram mwen an vire tèt anba. Se konsa, modèl la, objektif la nan ki se sove nou soti nan callbacks, se tèt li aplike lè l sèvi avèk callbacks?!

Sa a te ede m 'gade pwoblèm nan ak je diferan epi reyalize ke sa a se pa yon moso kòd abstr devan m', konpleksite a entèdi nan ki mwen p'ap janm konprann nan lavi mwen. Sa yo se jis modèl ki ka konprann san pwoblèm ak kiryozite akòz ak imèsyon gwo twou san fon. Se konsa moun aprann code Et grandi kòm devlopè.

Re-envante wou sa a

Se konsa, ale pi devan epi reenvante wou yo: ekri pwòp kòd done obligatwa ou, kreye yon pwomès homegrown, oswa menm fè pwòp solisyon jesyon eta ou.
Li pa enpòtan ke pèsonn p'ap janm sèvi ak tout bagay sa yo - men kounye a ou konnen ki jan fè li. Men, si ou gen opòtinite imedyatman itilize devlopman sa yo nan pwòp pwojè ou a, Lè sa a, sa a jeneralman gwo. Ou pral kapab devlope yo epi aprann yon lòt bagay.

Pwen isit la se pa voye kòd ou nan pwodiksyon, men aprann yon bagay nouvo. Ekri aplikasyon pwòp ou a nan yon solisyon ki egziste deja se yon bon fason yo aprann nan men pi bon pwogramè yo epi konsa amelyore konpetans ou.

Sous: www.habr.com

Add nouvo kòmantè