Let vs const — qaysi birini ishlatgan ma’qul(JavaScript)
Mening avvalgi maqolamda quyidagi fikrlar bor edi:
let vs const vs var: Odatda yagona bizga kerakligi — bu let. Agar Siz o’zgaruvchiga qayta yozishni taqiqlamoqchi bo’lsangiz, constni ishlatishingiz mumkin.
Bu fikr juda baxsli bo’ldi, Twitterda va Redditda bu masala bo’yicha juda qaynoq munozaralar bo’lib o’tdi. Eng ko’p bildirilgan fikr bu —
const‘ni ishlatish kerak va faqatgina zarurat bo’lgandagina let‘ga murojaat qilish kerak. Bu esa ESLintning prefer-const qoidasi bilan amalga oshirilishi mumkin.
Ushbu maqolada ularning har birini o’z kamchiliklari va yutuqlarini va o’zimning shaxsiy fikrimni boldirib o’taman.
Nima uchun const’dan foydalanishni ma’qul ko’rishadi:
Aniq qoidalar: har gal qachon
let va qachon const‘dan foydalanishni o’ylash — bu miya uchun ortiqcha yuklamadir. «Ishlatish mumkin bo’lgan joda doim let‘dan foydalaning» qoidasi Sizni ortiqcha bosh og’riqdan holi qiladi va bu vazifani linterlarga qoldiradi.
Qayta tayinlash qo’shimcha baglarni kelib chiqishiga sabab bo’lishi mumkin: katta funksiyalarda o’zgaruvchi qayta tayinlangan hollarni Siz «o’tkizvorishingiz» mumkin, bu esa baglar keltirib chiqarishi mumkin. Ayniqsa yopilishlarda(замыкания/circuit).
Const esa, Sizga doim bir xil qiymatni ko’rishingiz uchun imkoniyat beradi.
Mutatsiyani tushinish: JavaScriptni endi o’rganishni boshlaganlar
const’ni ishlash prinsipini tushunishmasliklari mumkin, o’ylaymanki bu o’zgaruvchilar mutatsiyadan qutqaradi. Const’dan foydalanish Sizga bunday holatlarga oldindan duch kelmaslikni tushunishga va ularni oldini olishga yordam beradi.
Mantiqsiz qayta tayinlashlar: ba’zi o’zgaruvchilarni qayta tayinlash umuman mantiqsiz bo’lishi mumkin. Masalan, React Hooks’da, useState’dan qilinadigan qiymat ko’proq parametrlarga o’xshashligi mumin. Ular bir xil yo’nalishda borishadi. Ularni tayinshlashdagi xatoliklarni ko’rib React’ning oqimlari haqida oldinroq bilib olasiz.
Bajarilishining foydalari: yana bir ba’zi kam sonli fikr bor: JavaScript
const qo’llanilgan kodni tezroq bajaradi. Bunda sababli u o’zgaruvchi qayta yozilmasligini oldindan biladi.
Nima uchun const’dan foydalanishni ma’qul ko’rishmaydi:
Const ma’nosini yo’qotadi: agar biz hamma joyda constni qo’llasak, biz biron bir narsa qayta yozilmaslik kerak muhim ekanligini aniqlash imkoniyatini yo’qotamiz.
Immutabellik bilan bo’ladigan tushunmovchiliklar: har doim
const‘dan foydalanish kerak deyilgan har bir munozarada immutabellikda adashib ketadiganlar bo’lishadi. Bu hayron qolarni narsa emas, chunki ikkalasi ham bir xil «=» operatsiyasini(e’lon qilish va qayta tayinlash) bajaradi. Bungan javoban doim «tilni o’rganish kerak» deb javob berishadi. Lekin, boshlovchilarni xato qilishlarni oldini oluvchi metod, shu boshlovchilarni chalg’itcha, u unchalik ham foydali emas. Afsuski, bu modullarda tarqaydigan va va hammaga ta’sir qiladigan mutatsiya xatoliklarini oldini olishga yordam bermaydi.
Qayta e’lon qilishdagi bosim: «const-first»ni tarafdorlari dasturchilarni o’zgaruvchilarda, shartlarni e’lon qilishda
let’dan foydalanmaslikk majbur qilishadi. Masalan, Siz quyidagicha yozishingiz mumkin:
const a = cond ? b : c
Agarda if shartni o’rniga, va hattoki b va c obyektlari murakkab bo’lishsa va ularga tushunarli nom berishda ham.
Bajarilishda hech qanday kuchli tomoni yo’q: bu men fikrim, Siz
var yoki let ishlatganingizda JavaScript qaysi o’zgaruvchilar bir marta e’lon qilinganini oldindan biladi. Agar biz const kodni tezroq ishlaydigan qiladi deb yana davom etsak, huddi shunday qarash bilan qo’shimcha tekshirishlar kodni sekin ishlashiga olib keladi deb qarashimiz mumkin. Ochig’i, JavaScript aqlliroq.
Shaxsiy fikrim
Manga farqi yo’q.
Men boshqalar ishlatadigan har qanday qoidani qo’llashim mumkin.
Agar Sizga farqi bo’lmasa, linter ishlating. U ularni tekshirishni avotmatlashtiradi va let ni const‘ga o’zgaritadi. Ya’ni Sizni kodni qayta tekshirib chiqishga vaqt sarflashdan qutqaradi.
Va oxirgisi, yodda tuting, linterlar kodni yozishni osonlashtirish yaratilingan. Agar qandaydir qoida Sizga yoki jamoangizga halaqit qilsa, uni olib tashlang. Bu hammasidan yaxshisi bo’ladi. O’z xatolaringizda o’rganing.
Manba:
Umumiy Dasturlash
Let vs const — qaysi birini ishlatgan ma’qul(JavaScript)