Reproduce Before You Fix
Tuzatishdan oldin qayta hosil qiling
Avtomexanikni tasavvur qiling: mijoz "mashinam ba'zan g'alati tovush chiqaradi" deb olib keladi. Agar mexanik mashinani ochib, "ehtimol bu detal" deb uni almashtirsa-yu, tovush qachon paydo bo'lishini bilmasa — u qimmat detalni bekorga almashtirishi, va tovush baribir qolishi mumkin. Yaxshi mexanik AVVAL tovushni QACHON, QANDAY sharoitda paydo bo'lishini aniqlaydi — uni ISHONCHLI ravishda qayta hosil qiladi — va faqat SHUNDAN keyin ta'mirlashga kirishadi.
Guessing vs Forming a Hypothesis darsida gipoteza qurishni ko'rdik — lekin gipotezani tekshirish uchun xatoni istalgan vaqtda qayta chaqira olish kerak. Xatoni ISHONCHLI qayta hosil qilmasdan turib tuzatishga urinish — "tuzatdim shekilli" degan noaniq holatga olib keladi: xato haqiqatan yo'qolganmi, yoki shunchaki hozircha ko'rinmayaptimi — bilib bo'lmaydi.
Xatoni qayta hosil qilish — ko'pincha eng ko'p vaqt oladigan, lekin eng muhim qadam. Foydali savollar: Xato HAR SAFAR sodir bo'ladimi, yoki ba'zan? Ma'lum bir kirish (input) bilanmi, yoki tasodifiymi? Ma'lum bir tartibda amallar bajarilgandami? Bitta foydalanuvchidami, ko'p foydalanuvchi bir vaqtda ishlaganda ediMi?
- •Xatoni eng KICHIK, eng SODDA holatga qisqartiring — butun ilovani ishga tushirmasdan, faqat muammoli qismni ajratib oling
- •Xatoni QADAM-BAQADAM yozib boring: "1. shu funksiyani chaqirdim, 2. shu qiymatni berdim, 3. shu natija chiqdi, kutilgani esa boshqa edi"
- •Agar xato "ba'zan" sodir bo'lsa — bu odatda concurrency (bir vaqtda ishlash) yoki tashqi holatga (vaqt, tarmoq, tasodifiy sonlar) bog'liqlik belgisi
Real dunyoda xatoni ISHONCHLI qayta hosil qilish uchun ko'pincha avtomatik test yozish eng yaxshi vosita — Professional Go Testing kursida ko'rgan go test bilan xatoni ko'rsatadigan kichik testni yozib qo'yish, xatoni qo'lda, qayta-qayta takrorlashdan ancha ishonchli va tezroq. Bu test — keyinchalik xato tuzatilganini ISBOTLASH uchun ham xizmat qiladi: test o'tsa, xato ketgan; o'tmasa, hali qolgan.
Ba'zan xatoni darhol qayta hosil qilib bo'lmaydi — masalan, u faqat production serverida, kamdan-kam holatlarda ko'rinadi. Bunday vaziyatda maqsad — xato yuz berganda YETARLICHA ma'lumot (jurnal yozuvlari, xato konteksti) qoldirishni ta'minlash, shunda keyingi safar xato chiqqanda uni tushunish uchun kerakli iz allaqachon mavjud bo'ladi. Bu — Writing Up the Root Cause darsida yana ko'rasiz.
Key Takeaway
Key Takeaway:
Xatoni tuzatishdan oldin, uni ISHONCHLI ravishda, xohlagan vaqtda qayta hosil qilishni o'rganing — imkon bo'lsa, buni avtomatik test sifatida yozib qo'ying. Bu sizga gipotezani tekshirish imkonini beradi va tuzatish HAQIQATAN ishlaganini isbotlaydi.
NEXT UP
Binary Search for Bugs