Side effect
Dasturlashda juda ko'p atamalar mavjud bo'lib, ko'plab o'quv qo'llanmalarida atamalardan foydalaniladi. Shulardan biri side effect bo'lib ushbu maqolada shu atamaning ma'nosini tushunishga harakat qilamiz.
Side effect - tibbiyotda biror dori vositasining nojo'ya ta'sirini bildiradi. Garchi bu atama asosan nojo'ya ta'sirlarni tasvirlash uchun qo'llanilsa-da, u dori vositasini qo'llashning foydali, ammo ko'zda tutilmagan oqibatlariga ham tegishli bo'lishi mumkin.
Hayotimiz davomida biror dori olsak albatta nojo’ya ta’sirlari degan qismini o'qiymiz. Masalan yurak uchun olingan dori, oshqozonga yoki jigarga nojo'ya ta'sir qilishi mumkin. Bundan tashqari dorilarning ko'zda tutilmagan foydali ta'sirlari ham bo'lishi mumkin ekan.
Tibbiyotdagi side effect kabi dasturlashda ham side effect bo'lishi mumkin ekan. Va bu atamaning ikkala sohada ham bir-biriga o'xshash tomonlari bor ekan.
Dasturlashda side effect funksiyalarga nisbatan ishlatiladi.
Funksiyada side effect bo'ladi agar funksiya:
- Global o'zgaruvchilarni o'zgartirsa yoki global o'zgaruvchilar ma'lumotlarini o'qisa
- HTTP so'rovlarni yuborsa
- Fayllar bilan ishlasa (fayldan o'qisa yoki faylga yozsa)
- console.log ishlatsa
Nega bu kabi amallar bo'lsa side effect bor deyiladi. Sababi funksiya o'zidan tashqarida bo'lgan ma'lumotlar, fayllar va/yoki tizimlar bilan aloqa qilyapti. Xuddi tepada aytganimdek tibbiyotda biror bir dori o'z ta'sir doirasidan tashqari boshqa organlarga ham ta'sir qilgani kabi. Bu ta'sir ijobiy bo'lishi mumkin, lekin baribir kutilmagan hisoblanadi.
- Global o'zgaruvchi funksiyadan tashqarida e'lon qilingan bo'ladi. Biz funksiyani chaqirayotganimizda (call qilganimizda) funksiya global o'zgaruvchini o'zgartirishidan xabarimiz bo'lmaydi.
- Funksiya HTTP so'rov yuborganda ham xuddi shu kabi holat bo'ladi. Deylik biror funksiyani chaqirganimizda u funksiya sahifadagi ko'rishlar sonini o'zgartiradigan API'ga so'rov yuboradi deylik. Biz bilmasdan funksiyaga bir necha marta so'rov yuborib ko'rishlar sonini oshirib yuborishimiz va statistikani buzib qo'yishimiz mumkin.
- console.log shunchaki browser console'iga biror yozuvni chiqaradi, amma bu yerda ham aslida global o'zgaruvchi o'zgaroyotgan bo'ladi (browser ichida).
side effect bo'lishi yomonmi?
Aslida side effect bo'lishi yomon narsa emas, faqat buni odatiy funksiyalar ichidan olib chiqib alohida qilib olishimiz kerak bo'ladi. Shunda kutilmagan holatlar bo'lish ehtimoli kamayadi. Shuningdek funksiyamizni testlay olishimiz ham osonlashadi.
Side effectlar haqida sof funksiyalar maqolasida ham aytib o'tganman.