Nima uchun g'ildiraklarni qayta ixtiro qilish foydali?

Nima uchun g'ildiraklarni qayta ixtiro qilish foydali?

Boshqa kuni men yuqori lavozimga ariza topshirayotgan JavaScript dasturchisi bilan suhbatlashdim. Suhbatda ishtirok etgan hamkasbi nomzoddan HTTP so'rovini amalga oshiradigan funktsiyani yozishni so'radi va agar muvaffaqiyatsiz bo'lsa, bir necha marta qayta urinib ko'ring.

U kodni to'g'ridan-to'g'ri doskaga yozdi, shuning uchun taxminiy narsalarni chizish kifoya qiladi. Agar u shunchaki gap nimada ekanini yaxshi tushunganini ko'rsatganida, biz juda mamnun bo'lardik. Ammo, afsuski, u muvaffaqiyatli yechim topa olmadi. Keyin biz buni hayajon bilan baholab, vazifani biroz osonlashtirishga qaror qildik va undan qayta qo'ng'iroqlar bilan funktsiyani va'dalarga asoslangan funktsiyaga aylantirishni so'radik.

Lekin afsuski. Ha, u ilgari bunday kodga duch kelgani aniq edi. U erda hamma narsa qanday ishlashini umumiy ma'noda bilardi. Bizga kerak bo'lgan narsa - bu kontseptsiyani tushunishni ko'rsatadigan yechimning eskizi. Biroq, nomzod doskaga yozgan kod mutlaqo bema'nilik edi. U JavaScript-da qanday va'dalar borligi haqida juda noaniq tasavvurga ega edi va ular nima uchun kerakligini tushuntirib bera olmadi. Kichkina uchun bu kechirimli bo'lardi, lekin u endi kattalar lavozimiga mos kelmadi. Qanday qilib bu ishlab chiquvchi murakkab va'dalar zanjiridagi xatolarni tuzatishi va boshqalarga aynan nima qilganini tushuntirishi mumkin edi?

Ishlab chiquvchilar tayyor kodni o'z-o'zidan ravshan deb hisoblashadi

Rivojlanish jarayonida biz doimo takrorlanadigan materiallarga duch kelamiz. Biz kod qismlarini har safar qayta yozishga majbur bo'lmasligimiz uchun o'tkazamiz. Shunga ko'ra, barcha e'tiborimizni asosiy qismlarga qaratib, biz ishlayotgan tayyor kodga o'z-o'zidan ravshan narsa sifatida qaraymiz - biz shunchaki hamma narsa kerakli darajada ishlaydi deb taxmin qilamiz.

Va odatda bu ishlaydi, lekin ishlar qiyinlashganda, mexanikani tushunish foydadan ko'ra ko'proq.

Shunday qilib, bizning katta ishlab chiquvchi lavozimiga nomzodimiz va'da berish ob'ektlarini o'z-o'zidan ravshan deb hisobladi. Ehtimol, u boshqa birovning kodida paydo bo'lganida, ular bilan qanday munosabatda bo'lish haqida fikrga ega edi, lekin u umumiy printsipni tushunmadi va suhbat davomida buni o'zi takrorlay olmadi. Ehtimol, u parchani yoddan eslagandir - bu unchalik qiyin emas:

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

Men ham buni qildim - va biz hammamiz buni bir nuqtada qilganmiz. Ular shunchaki bir parcha kodni eslab qolishdi, shunda ular keyinchalik o'z ishlarida foydalanishlari mumkin, shu bilan birga u erda hamma narsa qanday ishlashi haqida umumiy tasavvurga ega bo'lishdi. Ammo agar ishlab chiquvchi kontseptsiyani chinakam tushunsa, u hech narsani eslab qolmasligi kerak edi - u buni qanday qilishni bilardi va kodda o'ziga kerak bo'lgan hamma narsani osongina takrorlaydi.

Ildizlarga qayting

2012-yilda, front-end ramkalar hukmronligi hali o'rnatilmaganida, jQuery dunyoni boshqargan va men kitobni o'qib chiqdim. JavaScript Ninja sirlari, jQuery yaratuvchisi Jon Resig muallifi.

Kitob o'quvchiga noldan o'zining jQuery-ni qanday yaratishni o'rgatadi va kutubxonani yaratishga olib kelgan fikrlash jarayoni haqida noyob tushuncha beradi. So'nggi yillarda jQuery o'zining avvalgi mashhurligini yo'qotdi, lekin men hali ham kitobni juda tavsiya qilaman. Unda meni eng hayratga solgan narsa bularning barchasini o'zim o'ylab ko'rishim mumkin bo'lgan doimiy tuyg'u edi. Muallif ta'riflagan qadamlar shu qadar mantiqiy va ravshan bo'lib tuyuldiki, agar men unga tushsam, jQuery-ni osongina yaratishim mumkin deb jiddiy o'ylay boshladim.

Albatta, aslida men bunday hech narsa qila olmasdim - chidab bo'lmas darajada qiyin deb qaror qilgan bo'lardim. Mening shaxsiy echimlarim ishlash uchun juda oddiy va sodda ko'rinadi va men taslim bo'lardim. Men jQuery-ni o'z-o'zidan ravshan narsalar deb tasniflagan bo'lardim, ularning to'g'ri ishlashiga ko'r-ko'rona ishonishingiz kerak. Keyinchalik, men ushbu kutubxonaning mexanikasini o'rganish uchun vaqtni behuda sarf qilmasdim, lekin uni shunchaki qora quti sifatida ishlatardim.

Lekin bu kitobni o'qish meni boshqacha odam qildi. Men manba kodini o'qiy boshladim va ko'plab echimlarni amalga oshirish aslida juda shaffof, hatto aniq ekanligini aniqladim. Yo'q, albatta, o'z-o'zidan bu kabi narsalarni o'ylash - bu boshqa voqea. Ammo bu boshqa odamlarning kodini o'rganish va mavjud echimlarni qayta ishlab chiqarish, bu bizga o'zimiznikini topishga yordam beradi.

Siz olgan ilhom va siz seza boshlagan naqshlar sizni ishlab chiquvchi sifatida o'zgartiradi. Siz doimo foydalanadigan va sehrli artefakt deb o'ylashga odatlangan o'sha ajoyib kutubxona sehr ustida umuman ishlamasligini, balki oddiygina muammoni ixcham va topqirlik bilan hal qilishini bilib olasiz.

Ba'zan siz kodni bosqichma-bosqich tahlil qilib, ko'rib chiqishingiz kerak bo'ladi, ammo shunday qilib, kichik, izchil qadamlar bilan harakat qilib, siz muallifning yechim yo'lini takrorlashingiz mumkin. Bu sizga kodlash jarayoniga chuqurroq sho'ng'ish imkonini beradi va o'z yechimlaringizni topishga ko'proq ishonch beradi.

Men va'dalar bilan ishlay boshlaganimda, bu menga sof sehrdek tuyuldi. Keyin men ular bir xil qayta qo'ng'iroqlarga asoslanganligini bilib oldim va mening dasturlash dunyom ostin-ustun bo'lib ketdi. Demak, bizni qayta qo'ng'iroqlardan qutqarish bo'lgan naqshning o'zi qayta qo'ng'iroqlar yordamida amalga oshiriladimi?!

Bu menga masalaga turli ko'zlar bilan qarashga yordam berdi va bu mening oldimda qandaydir mavhum kod emasligini anglab etdi, men uning taqiqlangan murakkabligini hayotimda hech qachon tushunolmayman. Bu shunchaki qiziqish va chuqur suvga cho'mish bilan muammosiz tushunilishi mumkin bo'lgan naqshlar. Shunday qilib, odamlar kodlashni o'rganadilar va dasturchilar sifatida rivojlanadilar.

Ushbu g'ildirakni qayta ixtiro qiling

Shunday qilib, davom eting va g'ildiraklarni qayta ixtiro qiling: o'zingizning ma'lumotlaringizni bog'lash kodingizni yozing, mahalliy va'da yarating yoki hatto davlat boshqaruvi yechimini yarating.
Bularning barchasini hech kim ishlatmasligi muhim emas - lekin endi buni qanday qilishni bilasiz. Va agar siz o'zingizning loyihalaringizda bunday ishlanmalardan keyin foydalanish imkoniga ega bo'lsangiz, unda bu juda yaxshi. Siz ularni rivojlantirishingiz va boshqa narsalarni o'rganishingiz mumkin.

Bu erda gap kodingizni ishlab chiqarishga yuborish emas, balki yangi narsalarni o'rganishdir. Mavjud yechimni o'zingiz amalga oshirishni yozish - eng yaxshi dasturchilardan o'rganish va shu bilan o'z mahoratingizni oshirishning ajoyib usuli.

Manba: www.habr.com

a Izoh qo'shish