Five Things Every Diff Should Be Checked For
Har bir diff'da tekshirilishi kerak bo'lgan beshta narsa
Uchayotgan samolyot uchuvchisini tasavvur qiling: u parvozdan oldin xotirasiga tayanmaydi — u har safar BIR XIL tekshiruv ro'yxati (checklist) bo'ylab yuradi: yoqilg'i, tormozlar, qanotlar, radio, hujjatlar. Ro'yxat zerikarli tuyulishi mumkin, lekin aynan shu takrorlanuvchanlik — muhim narsani unutib qo'yishning oldini oladi. Kod ko'rib chiqishda ham xuddi shunday tekshiruv ro'yxati foydali.
Reading for Intent vs. Reading for Correctness darsida ikki xil o'qish turini ko'rdik. Endi TO'G'RILIK tekshiruvini ANIQ beshta toifaga bo'lamiz — bu kursning qolgan qismida har birini alohida, real Go kodi bilan chuqur ko'rib chiqamiz.
| № | Toifa | Savol |
|---|---|---|
| 1 | Nil tekshiruvlari | Bu ko'rsatgich (pointer) yoki interfeys nil bo'lishi mumkinmi, va agar shunday bo'lsa, kod uni tekshiradimi? |
| 2 | Xatoni qayta ishlash bo'shliqlari | Har bir error qaytaruvchi chaqiruv tekshiriladimi, yoki jimgina yutib yuboriladimi? |
| 3 | Race condition'lar | Bir nechta goroutine bir xil ma'lumotni bir vaqtda o'zgartirishi mumkinmi, mutex yoki kanalsiz? |
| 4 | Resurs sizib chiqishi | Ochilgan fayl, tarmoq ulanishi yoki boshqa resurs har doim yopiladimi (defer Close())? |
| 5 | Bittaga xato (off-by-one) | Sikl chegaralari (< yoki <=), slice indekslari to'g'ri hisoblanganmi? |
Bu beshta toifa tasodifiy tanlanmagan — ular Go kodida ENG KO'P uchraydigan, va ENG QIMMATGA tushadigan xato turlari. Ularning umumiy xususiyati: kod odatda TO'G'RI ishlaydi — asosiy, "baxtli yo'l" (happy path) holatida hech qanday muammo ko'rinmaydi. Xato faqat CHEGARA holatida (bo'sh ro'yxat, nil qiymat, bir vaqtda ikkita so'rov, tarmoq nosozligi) namoyon bo'ladi — aynan shuning uchun ular testlardan ham, ko'z bilan yuzaki qarashdan ham OSON qochib qoladi.
Bu — Systematic Debugging kursidagi kabi, muammoni oldindan BILISH orqali uni tuzatishdan ko'ra ARZONROQ oldini olish g'oyasi: kod ishlab chiqilgandan keyin uni tuzatish o'rniga, kod REVIEW bosqichida shu beshta savolni berish orqali, xato PRODUCTION'ga umuman yetib bormaydi.
Keyingi beshta darsda, biz aynan shu beshta toifaning har biri uchun REAL, 15-30 qatorlik Go kodini ko'rib chiqamiz — har birida BITTA yashirin xato bor. Sizning vazifangiz — kodni o'qib, tavsifni o'qib, va xato qayerda ekanini o'zingiz aniqlashga urinib ko'rish, keyin izohni o'qish.
Key Takeaway
Key Takeaway:
Har bir diff'ni ko'rib chiqishda besh savolni bering: nil tekshiruvlari bormi, xatolar to'g'ri qayta ishlanganmi, race condition yo'qmi, resurslar yopiladimi, va sikl chegaralari to'g'ri hisoblanganmi. Bu xatolar odatda "baxtli yo'l"da ko'rinmaydi — faqat chegara holatida chiqadi.
NEXT UP
The Nil Pointer That Slipped Through