Pure Function Yozishning Afzalliklari:
- clean code - barchaga tushinarli toza kod yozish;
- Test qilish juda oson;
- Koddagi xatoni tuzatishga oson;
- Alohida ajratilgan va Mustaqil funksiya;
Pure Function o'zi nima?
Pure Function - Agar bir xil argumentlar beeriladigan bo'lsa doim bir xil natija qaytaradigan funksiya. Bu Funksiyalar hech qanday holatga yoki dasturning bajarilishi davomida ma'mulotlarning o'zgarishiga bog'liq emas, ular o'z argumentlariga bog'liq.
Bundan tashqari, pure function
network request
yoki ma'lumotlar mutatsiyasi kabi kuzatilishi mumkin bo'lgan nojo'ya ta'sirlarni keltirib chiqarmaydi.
Quyidagi Javscript funksiyani ko'rib chiqaylik:
function calculateGST( productPrice ) {
return productPrice * 0.05;
}
Agar biz productPrice
uchun bir hil qiymat bersak, Yuqoridagi funksiya doim bir hil javob qaytaradi. Ya'ni funksiya qaytaradigan qiymatga boshqa tashqi qiymatlar yoki holatlar ta'sir o'tkaza olmaydi. Shuning uchun biz calculateGST
funksiyasini pure function
deb nomlashimiz mumkin.
Endi, quyidagi funksiyani ko'rib chiqamiz:
var tax = 20;
function calculateGST( productPrice ) {
return productPrice * (tax / 100) + productPrice;
}
Ushbu funksiya pure function
yoki yo'qligini taxmin qila olasizmi?
Toppa to'gri, bu pure function
emas, sababi funksiya qaytaradigan qiymat o'zidan tashqarida turgan tax
deb nomlanuvchi o'zgaruvchiga bog'liq. Agar keyinchalik o'zgaruvchining qiymati o'zgarsa biz funksiya parametriga eski productPrice
' ni bersak ham funksiya boshqacha qiymat qataradi.
Ammo bir narsani yodda tutishimiz kerak.
Eslatma: Agar pure funksiya pure funksiyani chaqiradigan bo'lsa bu hech qanday yomon ta'sir olib kelmaydi va chaqirayotgan funksiya
pure function
hisoblanadi(Masalan: funksiyani ichidaMath.max()
'dan foydalanish).
Quyida funksiyalar pure function
bo'lishi uchun keltirib chiqarmasligi kerak bo'lgan side effect
'larni ko'rib chiqamiz:
- HTTP so'rov yaratish;
- Mutatsion ma'lumotlar(mutating data;
- Ekran yoki konsolga chop etish;
- DOM so'rov/manipulatsiyasi;
- Math.random();
- Joriy vaqtni olish(getting current time).
Top comments (0)