Təkəri yenidən kəşf etmək nə üçün faydalıdır?

Təkəri yenidən kəşf etmək nə üçün faydalıdır?

Keçən gün mən yüksək vəzifəyə müraciət edən JavaScript tərtibatçısından müsahibə aldım. Müsahibədə də iştirak edən həmkarı namizəddən HTTP sorğusu edəcək funksiya yazmağı və uğursuz olarsa, bir neçə dəfə cəhd etməyi xahiş etdi.

Kodu birbaşa lövhəyə yazdı, ona görə də təxmini bir şey çəkmək kifayət edərdi. Əgər o, sadəcə olaraq məsələnin nə olduğunu yaxşı başa düşdüyünü göstərsəydi, biz kifayət qədər razı olardıq. Lakin təəssüf ki, o, uğurlu çıxış yolu tapa bilmədi. Sonra biz, həyəcana təbaşir edərək, tapşırığı bir az asanlaşdırmaq qərarına gəldik və ondan geri çağırışları olan bir funksiyanı vədlər üzərində qurulmuş bir funksiyaya çevirməsini istədik.

Amma heyif. Bəli, onun əvvəllər belə kodla qarşılaşdığı açıq-aşkar görünürdü. Orada hər şeyin necə işlədiyini ümumi şəkildə bilirdi. Bizə lazım olan tək şey konsepsiyanın başa düşülməsini nümayiş etdirən həllin eskizidir. Lakin namizədin lövhəyə yazdığı kod tam cəfəngiyyat idi. O, JavaScript-də hansı vədlərin olması barədə çox qeyri-müəyyən bir fikri var idi və onların nə üçün lazım olduğunu izah edə bilmədi. Kiçiklər üçün bu bağışlana bilərdi, lakin o, artıq böyük vəzifəyə uyğun deyildi. Bu tərtibatçı mürəkkəb vədlər zəncirindəki səhvləri necə düzəldə bilər və başqalarına tam olaraq nə etdiyini izah edə bilər?

Tərtibatçılar hazır kodu öz-özünə aydın hesab edirlər

İnkişaf prosesində biz daim təkrarlana bilən materiallarla qarşılaşırıq. Kod fraqmentlərini köçürürük ki, hər dəfə onları yenidən yazmağa ehtiyac qalmasın. Müvafiq olaraq, bütün diqqətimizi əsas hissələrə cəmləyərək, işlədiyimiz bitmiş koda özümüzə aydın olan bir şey kimi baxırıq - sadəcə olaraq hər şeyin lazım olduğu kimi işləyəcəyini güman edirik.

Və adətən işləyir, amma işlər çətinləşəndə ​​mexanikanı başa düşmək daha çox nəticə verir.

Beləliklə, baş tərtibatçı vəzifəsinə namizədimiz vəd obyektlərini öz-özünə aydın hesab edirdi. Yəqin ki, o, başqasının kodunda bir yerdə baş verdikdə onlarla necə davranacağına dair bir fikri var idi, lakin o, ümumi prinsipi başa düşmədi və müsahibə zamanı bunu təkrarlaya bilmədi. Bəlkə də fraqmenti əzbər xatırlayırdı - bu o qədər də çətin deyil:

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

Mən də bunu etdim - və yəqin ki, hamımız bunu nə vaxtsa etdik. Onlar sadəcə bir kod parçasını əzbərlədilər ki, sonradan işlərində istifadə edə bilsinlər və orada hər şeyin necə işlədiyi barədə ümumi təsəvvür yaransın. Amma əgər tərtibatçı həqiqətən konsepsiyanı başa düşsəydi, o, heç nəyi yadda saxlamalı olmazdı - o, sadəcə olaraq bunu necə edəcəyini bilərdi və kodda lazım olan hər şeyi asanlıqla təkrarlayardı.

Köklərə qayıdın

2012-ci ildə, hələ front-end çərçivələrin üstünlüyü qurulmadıqda, jQuery dünyanı idarə etdi və mən kitabı oxudum. JavaScript Ninja sirləri, jQuery-nin yaradıcısı Con Resiqin müəllifidir.

Kitab oxucuya sıfırdan öz jQuery-ni necə yaratmağı öyrədir və kitabxananın yaradılmasına səbəb olan düşüncə prosesi haqqında unikal fikir verir. Son illərdə jQuery əvvəlki populyarlığını itirdi, amma yenə də kitabı çox tövsiyə edirəm. Onda məni ən çox heyrətləndirən, bütün bunları özüm də düşünə biləcəyim inadkar hissi idi. Müəllifin təsvir etdiyi addımlar o qədər məntiqli, o qədər aydın görünürdü ki, mən ciddi şəkildə düşünməyə başladım ki, jQuery-ni sadəcə başa düşsəm asanlıqla yarada bilərəm.

Təbii ki, reallıqda mən belə bir şey edə bilməzdim - bunun dözülməz dərəcədə çətin olduğuna qərar verərdim. Öz həll yollarım işləmək üçün çox sadə və sadəlövh görünür və mən imtina edərdim. Mən jQuery-ni öz-özünə aydın olan şeylər kimi təsnif edərdim, düzgün işləməsinə sadəcə kor-koranə inanmaq lazımdır. Sonradan mən bu kitabxananın mexanikasına dərindən baxmağa vaxt itirməzdim, sadəcə olaraq ondan bir növ qara qutu kimi istifadə edərdim.

Amma bu kitabı oxumaq məni başqa bir insan etdi. Mən mənbə kodunu oxumağa başladım və bir çox həllərin həyata keçirilməsinin əslində çox şəffaf, hətta aşkar olduğunu kəşf etdim. Xeyr, təbii ki, təkbaşına belə bir şey düşünmək ayrı bir hekayədir. Ancaq başqalarının kodunu öyrənir və özümüzə aid bir şey tapmağımıza kömək edən mövcud həlləri təkrarlayır.

Qazandığınız ilham və fərq etməyə başladığınız nümunələr sizi bir tərtibatçı kimi dəyişəcək. Davamlı istifadə etdiyiniz və sehrli artefakt kimi düşünməyə adət etdiyiniz o gözəl kitabxananın heç də sehr üzərində işləmədiyini, sadəcə olaraq bir problemi lakonik və bacarıqla həll etdiyini görəcəksiniz.

Bəzən kodu addım-addım təhlil etməli olacaqsınız, ancaq kiçik, ardıcıl addımlarla hərəkət edərək, müəllifin həll yolunu təkrarlaya bilərsiniz. Bu, kodlaşdırma prosesinə daha dərindən girməyə imkan verəcək və öz həllərinizi tapmaqda sizə daha çox inam verəcək.

Mən ilk dəfə vədlərlə işləməyə başlayanda bu, mənə sırf sehr kimi görünürdü. Sonra onların eyni geri çağırışlara əsaslandığını bildim və mənim proqramlaşdırma dünyam alt-üst oldu. Yəni, məqsədi bizi geri çağırışlardan xilas etmək olan nümunə özü geri çağırışlardan istifadə etməklə həyata keçirilir?!

Bu, mənə məsələyə fərqli gözlə baxmağa və bunun mənim həyatımda heç vaxt dərk edə bilməyəcəyim, qarşımda duran hansısa abstrakt kod parçası olmadığını başa düşməyə kömək etdi. Bunlar sadəcə maraq və dərin daldırma ilə problem olmadan başa düşülə bilən nümunələrdir. İnsanlar kodlaşdırmağı və inkişaf etdirici kimi böyüməyi belə öyrənirlər.

Bu təkəri yenidən kəşf edin

Beləliklə, davam edin və təkərləri yenidən kəşf edin: öz məlumat bağlama kodunuzu yazın, yerli vəd yaradın və ya hətta öz dövlət idarəetmə həllinizi hazırlayın.
Heç kimin bütün bunları istifadə etməyəcəyinin əhəmiyyəti yoxdur - amma indi bunu necə edəcəyinizi bilirsiniz. Və sonradan öz layihələrinizdə bu cür inkişaflardan istifadə etmək imkanınız varsa, bu, ümumiyyətlə əladır. Onları inkişaf etdirə və başqa bir şey öyrənə biləcəksiniz.

Burada məqsəd kodunuzu istehsala göndərmək deyil, yeni bir şey öyrənməkdir. Mövcud həllin öz tətbiqini yazmaq ən yaxşı proqramçılardan öyrənmək və bununla da bacarıqlarınızı artırmaq üçün əla yoldur.

Mənbə: www.habr.com

Добавить комментарий