Yangi Oʻzbekistonni, albatta, yoshlar bilan birga quramiz. 2020-yil yoshlarga


Download 1.38 Mb.
Pdf ko'rish
bet21/28
Sana10.01.2023
Hajmi1.38 Mb.
#1087113
1   ...   17   18   19   20   21   22   23   24   ...   28
Bog'liq
Adxam Soataliyev BMI65018

 
4.1.1-rasm. Null safety muammosi 
Null xavfsizligi bilan Dart kodingizdagi potentsial null xatolarni topadi. 
Null xavfsizlik bilan siz kodingiz haqida ko‘proq ishonch bilan fikr yuritishingiz 
mumkin. O‘rnatilgan ilovalarda boshqa bezovta qiluvchi ish vaqti null dereferencing 
xatolari yo‘q. Buning o‘rniga, siz kodlashda statik xatolarga duch kelasiz. 
Null xavfsizlik tamoyillari. Dart null xavfsizligini qo‘llab-quvvatlash quyidagi uchta 
asosiy dizayn tamoyillariga asoslanadi: 
1. Odatiy bo‘lib null bo‘lmaydi . Agar siz Dartga o‘zgaruvchining null 
bo‘lishi mumkinligini aniq aytmasangiz, u null bo‘lmagan deb 
hisoblanadi. Biz buni sukut bo‘yicha tanladik, chunki biz null bo‘lmagan 
API-da eng keng tarqalgan tanlov ekanligini aniqlandi. 


56 
2. Bosqichma-bosqich qabul qilinishi mumkin . U erda juda ko‘p Dart kodi 
mavjud. Siz tanlagan vaqtda, keyin esa bosqichma-bosqich qisman nol 
xavfsizlik rejimiga o‘tish mumkin bo‘ladi. Xuddi shu loyihada null-xavfsiz 
va null-xavfsiz kodga ega bo‘lish mumkin bo‘ladi. Migratsiyada sizga 
yordam beradigan vositalarni ham taqdim etadi. 
3. To‘liq ovoz . Dartning nol xavfsizligi yaxshi . Bu shuni anglatadiki, biz tip 
tizimiga ishonishimiz mumkin: agar u biror narsa null emasligini aniqlasa
u hech qachon null bo‘la olmaydi. Bu kompilyatorni optimallashtirish 
imkonini beradi. Butun loyihangizni va bog‘liqliklaringizni nol xavfsizlikka 
o‘tkazganingizdan so‘ng, siz barqarorlikning to‘liq afzalliklaridan 
foydalanasiz - nafaqat kamroq xatolar, balki kichikroq ikkilik va tezroq 
bajarilishi. 
1. Funksiya bo‘yicha null bo‘lmagan. Asosiy sintaksisi etarlicha sodda. Bu erda turli 
yo‘llar bilan e'lon qilingan ba'zi null bo‘lmagan o‘zgaruvchilar mavjud. Esingizda 
bo‘lsin, nonulable standart hisoblanadi, shuning uchun bu deklaratsiyalar bugungidek 
ko‘rinadi, lekin ularning ma'nosi o‘zgaradi. Dart yuqoridagi o‘zgaruvchilarning 
birortasiga hech qachon null qo‘ymasligingizga ishonch hosil qiladi. Agar siz widget = 
nullminglab qatorlarni keyinroq bajarishga harakat qilsangiz, siz statik tahlil xatosi va 
qizil chiziqli chiziqlarni olasiz va dasturingiz kompilyatsiya qilishni rad etadi.
Null bo‘ladigan o‘zgaruvchilar. Agar o‘zgaruvchingiz null bo‘lishini istasangiz, 
quyidagi ?kabi dan foydalanishingiz mumkin: Sintaksisdan funktsiya parametrlarida va 
qaytariladigan qiymatlarda ham foydalanishingiz mumkin : Ammo yana bir bor orzuim 
shuki, siz kamdan-kam hollarda foydalanishingiz kerak bo‘ladi. 
Turlaringizning aksariyati null bo‘lmaydi. Nul xavfsizlik bilan samarali bo‘lish. 
Null xavfsizlik faqat xavfsizlik bilan bog‘liq emas. Shuningdek, funksiyadan 
foydalanishda unumli boʻlishingizni istaymiz, yaʼni funksiyadan foydalanish oson 
boʻlishi kerak. Masalan, ifnull qiymatni tekshirish uchun foydalanadigan ushbu kodga 
qarang: 


57 
Dart vositalari qanday qilib if-iborasini topshirganimizda, loudness o‘zgaruvchi 
null bo‘lmasligini aniqlay olishiga e'tibor bering. Shunday qilib, Dart bizga clamp() 
halqadan o‘tmasdan usulni chaqirishga imkon beradi. Ushbu qulaylik oqim tahlili deb 
ataladigan narsa bilan ta'minlanadi: Dart analizatori xuddi uni bajarayotgandek 
kodingizdan o‘tib, kodingiz haqida qo‘shimcha ma'lumotlarni avtomatik ravishda 
aniqlaydi. 
Mana yana bir misol, u Dart o‘zgaruvchining null emasligiga ishonch hosil qilishi 
mumkin bo‘lgan holatni ko‘rsatadi, chunki biz unga har doim nol bo‘lmagan qiymatni 
beramiz: 
Yuqoridagi topshiriqlardan birini olib tashlasangiz (masalan, qatorni o‘chirish 
orqali statusText = 'Update failed';), Dart bu null bo‘lmasligiga kafolat bera 
olmaydi statusText: siz statik xatoga yo‘l qo‘yasiz va kodingiz kompilyatsiya 
qilinmaydi. Buni DartPadda sinab ko‘rishingiz mumkin. 
Null xavfsizlik bizning matn terish tizimimizga juda muhim o‘zgarish bo‘lganligi 
sababli, agar biz majburiy asrab olishni talab qilsak, bu juda buzuvchi bo‘lar edi. Qachon 
to‘g‘ri kelishini o‘zingiz hal qilmoqchimiz, shuning uchun null xavfsizlik qo‘shiladigan 
xususiyatdir: siz bunga tayyor bo‘lguningizcha null xavfsizlikni yoqishga majbur 
bo‘lmasdan, eng so‘nggi Dart va Flutter relizlaridan foydalanishingiz mumkin. . Siz 
hatto hali bo‘lmagan ilova yoki paketdan nol xavfsizlikni yoqqan paketlarga ham 
ishonishingiz mumkin. 
Qabul qilishni tanlaganingizdan so‘ng, birinchi navbatda bog‘liqlik grafigining 
barglari ko‘chirilishi bilan kodni tartibda ko‘chirishni qat'iy tavsiya qilamiz. Misol 
uchun, agar C A ga bog‘liq bo‘lgan B ga bog‘liq bo‘lsa, avval A ga, keyin B ga, keyin 
C ga o‘tkazing. Bu tartib A, B va C kutubxonalar, paketlar yoki ilovalar bo‘ladimi, amal 
qiladi. 


58 
Buyurtma nima uchun muhim? Garchi siz bog‘liqliklaringiz ko‘chirilishidan 
oldin kodni migratsiya qilishda biroz oldinga siljishingiz mumkin bo‘lsa-da, agar 
bog‘liqliklaringiz ko‘chish vaqtida API'larini o‘zgartirsa, ikkinchi migratsiya o‘tishini 
amalga 
oshirishingiz 
kerak 
bo‘ladi. Beta-versiyasiga 
kelganimizda, 
qaysi 
bog‘liqliklaringiz ko‘chib ketganini aniqlashga yordam beradigan vositalarni taqdim 
etamiz. Agar siz paket muallifi bo‘lsangiz, API-larni buzish xavfini oldini olish uchun 
null-xavfsiz versiyani nashr etishdan oldin barcha bog‘liqliklaringiz ko‘chib ketguncha 
kuting. 
Sizning bog‘liqliklaringiz tayyor bo‘lgach, bizning migratsiya vositamizdan 
foydalanishingiz mumkin. Asbob barcha mavjud kodlaringizni tahlil qilish orqali 
ishlaydi. Migratsiya vositasi interaktivdir, shuning uchun siz ushbu vosita xulosa qilgan 
nullability xususiyatlarini ko‘rib chiqishingiz mumkin. Asbobning biron bir xulosasi 
bilan rozi bo‘lmasangiz, xulosani o‘zgartirish uchun noaniqlik bo‘yicha maslahatlar 
qo‘shishingiz mumkin. Bir nechta migratsiya maslahatlarini qo‘shish migratsiya sifatiga 
katta ta'sir ko‘rsatishi mumkin. 

Download 1.38 Mb.

Do'stlaringiz bilan baham:
1   ...   17   18   19   20   21   22   23   24   ...   28




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling