Isolating Variables: Change One Thing at a Time
O'zgaruvchilarni izolyatsiya qilish: bir vaqtda bittasini o'zgartiring
Oshpazni tasavvur qiling: taomi juda sho'r chiqdi. U bir vaqtning o'zida ham tuzni, ham retseptni, ham pishirish vaqtini o'zgartirib, qayta pishirsa — taom yaxshilansa ham, U QAYSI o'zgarish yordam berganini hech qachon bilmaydi. Yaxshi oshpaz BITTA narsani (masalan, faqat tuz miqdorini) o'zgartirib ko'radi, natijani kuzatadi, so'ngra keyingi o'zgarishga o'tadi.
Xatoni qidirishda ham xuddi shu tuzoq bor: bir vaqtning o'zida bir nechta narsani o'zgartirib ("balki bu ham, balki u ham sabab" deb), keyin xato yo'qolsa — QAYSI o'zgarish haqiqatan yordam berganini bilib bo'lmaydi. Ehtimol faqat bittasi kerak edi, qolganlari esa keraksiz murakkablik qo'shib qo'ydi, yoki hatto yangi, boshqa xato yashiryapti.
O'zgaruvchilarni izolyatsiya qilish — bir vaqtning o'zida faqat BITTA narsani o'zgartirib, natijani kuzatish, so'ngra keyingi o'zgarishga o'tish. Bu Binary Search for Bugs darsidagi strategiyaning "kod qatorlari" o'rniga "sharoit" ustida qo'llanilishi: agar xato "faqat katta fayllarda" sodir bo'lsa, fayl hajmidan tashqari HAMMA narsani bir xil qoldirib, faqat hajmni o'zgartirib ko'rasiz.
| Noto'g'ri yondashuv | To'g'ri yondashuv |
|---|---|
| Bir vaqtda: kutubxona versiyasini yangilash + konfiguratsiyani o'zgartirish + kodni qayta yozish | Avval FAQAT kutubxona versiyasini yangilab, sinab ko'rish |
| Xato yo'qoldi — lekin qaysi o'zgarish sabab bo'lgani noma'lum | Har bir o'zgarishdan keyin ALOHIDA test qilib, qaysi biri ta'sir qilganini aniq bilish |
Bu tamoyil ayniqsa concurrency (bir vaqtda ishlash) bilan bog'liq xatolarni qidirishda muhim: agar dastur ba'zan noto'g'ri natija bersa, siz bir vaqtning o'zida ham goroutine sonini, ham vaqt kechikishini o'zgartirsangiz, muammoning aynan qaysi omilga bog'liqligini hech qachon bilolmaysiz. Concurrency Fundamentals kursida ko'rgan race condition'larni topishda ham AYNAN shu — bir vaqtda bitta o'zgaruvchan omilni tekshirish — kalit.
Amaliy odat: xatoni qidirishda "kontrol guruh" tushunchasidan foydalaning — kodning ISHLAYDIGAN holatini saqlab qo'ying (masalan, git orqali alohida branch'da), so'ngra BITTA o'zgarish qilib, natijani ishlaydigan holat bilan solishtiring. Agar farq yo'q bo'lsa, o'zgarishni bekor qilib, keyingisini sinang. Bu jarayon sekinroq ko'rinsa ham, oxir-oqibat TO'G'RI sababni topishga olib boradigan yagona ishonchli yo'l.
Key Takeaway
Key Takeaway:
Xatoni qidirishda bir vaqtning o'zida faqat BITTA narsani o'zgartiring va natijani kuzating. Bir nechta o'zgarishni birga qilish — xato yo'qolsa ham, qaysi o'zgarish haqiqatan sabab bo'lganini bilishni imkonsiz qiladi.
NEXT UP
Logging vs. the Debugger