Mavzu
Dars xulosasi
- Code Review — yozilgan kodni asosiy tarmoqqa birlashtirishdan oldin jamoa a'zolari tomonidan tahlil qilinishi va baholanishi.
- Code Review'ning 3 maqsadi: xatolarni erta aniqlash, xavfsizlik zaifliklarini to'sish va jamoada bilim almashish.
- Review etikasi: "Odamni emas, kodni tahlil qiling". Buyruq bermasdan, asoslangan savollar bering va yaxshi yechimlarni ham e'tirof eting.
- Blocker (Kritik to'siq) — xavfsizlik, buzilgan mantiq yoki qulash xavfi; tuzatmaguncha merge taqiqlanadi (
Request changes). - Nitpick (Mayda maslahat) — uslub, nomlash yoki bo'sh qatorlar; ixtiyoriy hisoblanadi va PR birlashishini to'xtatmaydi.
- GitHub'dagi
suggestionbloki muallifga to'g'rilangan kodni taklif qiladi va uni bitta tugma bilan commit qilish imkonini beradi. - Branch Protection Rules —
maintarmog'ini to'g'ridan-to'g'ri pushlardan himoyalash va kamida 1 ta tasdiq (Approve) talab qilish qoidasi.
Qo'shimcha ma'lumot
Psixologik xavfsizlik va toksik muloqotdan saqlanish
Dasturchilar ko'pincha o'zlari yozgan kodga o'z farzandlaridek bog'lanib qolishadi. Har qanday keskin tanqidiy sharh insonning g'ururiga tegishi yoki uni tushkunlikka tushirishi mumkin. Shu sababli so'zlarni to'g'ri tanlash — texnik bilimdan kam emas:
- ❌ "Nega bunday bema'ni sikl yozding?" (Hujumkor)
- ✅ "Bu yerdagi ikkinchi sikl katta ma'lumotlarda sekinlashishi mumkin. Keling, buni qanday tezlashtirishni o'ylab ko'ramiz." (Hamkorlik)
Reviewer uchun 5 ta nazorat savoli
Hamkasbingizning PR'ini ko'rib chiqayotganda o'zingizga quyidagi savollarni bering:
- Mantiq: Bu kod belgilangan vazifani to'g'ri bajaryaptimi?
- Chekka holatlar (Edge Cases): Bo'sh ro'yxat, nol raqami yoki xato parol kiritilsa nima bo'ladi?
- Xavfsizlik: Kodda ochiq qolgan parollar, shifrlanmagan ma'lumotlar yo'qmi?
- O'qilishi: Bu kodni 6 oydan keyin boshqa odam tushunishi osonmi?
- Testlar: Yangi yozilgan qism uchun unit testlar qo'shilganmi?
Branch Protection: Hatto xo'jayin ham buza olmaydi!
Professional kompaniyalarda Branch Protection sozlamasida "Do not allow bypassing the above settings" (Yuqoridagi cheklovlarni chetlab o'tishga yo'l qo'yilmasin) bandi yoqiladi. Bu hatto repozitoriya egasi yoki bosh direktor bo'lsa ham, o'z kodini kamida bitta muhandis ko'rib tasdiqlamaguncha main ga tiqa olmasligini kafolatlaydi!
Atamalar lug'ati
| Atama | Ma'nosi |
|---|---|
| Code Review | Kodni birlashtirishdan oldin jamoaviy ko'rib chiqish jarayoni |
| Reviewer | Kodni o'qib, tahlil qilib, fikr bildiruvchi tekshiruvchi |
| Author | Kodni yozgan va Pull Request ochgan muallif |
| Inline Comment | Kodning aynan bitta qatoriga qoldirilgan aniq sharh |
| Code Suggestion | Bir bosishda qabul qilib commit qilinadigan taklif kodi |
| Blocker | Tuzatish majburiy bo'lgan jiddiy xato yoki xavfsizlik teshigi |
Nitpick (nit:) | PR'ni to'xtatmaydigan ixtiyoriy mayda maslahat |
| Approve | Kod ma'qullanganligi va birlashtirishga tayyorligi belgisi |
| Request Changes | Kodda kamchiliklar borligi va tuzatish talabi belgisi |
| Branch Protection | Asosiy tarmoqni to'g'ridan-to'g'ri push va ruxsatsiz o'zgarishlardan qulflash |
Bilasizmi?
- SmartBear kompaniyasi o'tkazgan tadqiqotga ko'ra, dasturchi bir vaqtning o'zida 200 dan 400 qatorgacha kodni eng yuqori samaradorlik bilan tekshira oladi. 600 qatordan oshgach, xatolarni ilg'ash qobiliyati 70% ga tushib ketadi!
- Bir vaqtlar kodni ko'rib chiqish qog'ozda o'tkazilgan: muhandislar kodni printerdan chiqarib, xonada yig'ilib qizil ruchka bilan tekshirib chiqishgan.
- Hozirgi kunda katta kompaniyalarda PR ochilishi bilanoq sun'iy intellekt linterlari va xavfsizlik botlari odamdan oldin dastlabki tahlilni yakunlab qo'yadi.
Topshiriqlar
1. Xushmuomala sharhga aylantiring oson
Quyidagi qo'pol sharhni professional, konstruktiv va ijobiy sharhga aylantirib yozing: "Bu funksiyang juda sekin ishlaydi, umuman o'ylamasdan yozgansan."
Kutiladigan natija: xolis, dalilli va hurmat bilan yozilgan yangi sharh matni.
2. Blocker yoki Nitpick? oson
Quyidagi 4 ta holatni ajrating:
- Ma'lumotlar bazasi paroli ochiq matnda qolib ketgan;
- Fayl oxirida bitta bo'sh qator yetishmayapti;
- Foydalanuvchi hisobida pul yetmaganda ham tovar berib yuborilmoqda;
- O'zgaruvchi nomi
resemas,responsebo'lsa yaxshiroq bo'lardi.
Kutiladigan natija: 4 ta to'g'ri tasniflangan band (Blocker / Nitpick) va qisqa sabab.
3. GitHub suggestion sintaksisini yozing oson
GitHub sharh oynasida bir bosishda qabul qilinadigan taklif kodi yaratish uchun Markdown formatida sintaksis yozing (masalan, x = x + 1 o'rniga x += 1 taklifi).
Kutiladigan natija: to'g'ri formatlangan suggestion kodi bloki.
4. Branch Protection qoidasi nimani to'sadi? oson
Agar main tarmog'ida Branch Protection yoqilgan bo'lsa va dasturchi terminaldan git push origin main buyrug'ini bersa nima sodir bo'ladi?
Kutiladigan natija: Git chiqaradigan xatolik sababining 2 jumlalik tushuntirishi.
5. Xavfli kodni tahlil qiling (Security Review) o'rta
Quyidagi Python kodini ko'rib chiqing va undagi jiddiy xavfsizlik xatosini toping:
python
def check_admin(password):
if password == "admin123":
return True
return FalseUshbu kod muallifiga GitHub inline sharhi shaklida xavfni tushuntiring va xavfsizroq yechim taklif qiling.
Kutiladigan natija: xavf tahlili (Hardcoded password) va professional sharh matni.
6. GitHub'da Files changed yordamida sharh qoldirish o'rta
O'zingiz yoki do'stingiz ochgan PR'dagi biror qator ustiga bosib, rasmiy inline sharh qoldiring va unga code suggestion biriktiring.
Kutiladigan natija: GitHub PR oynasida qoldirilgan taklif kodi skrinshoti.
7. Branch Protection qoidasini o'rnatish o'rta
O'z repozitoriyangizda Settings → Branches bo'limiga kiring va main uchun kamida 1 ta approve talab qiluvchi qoida yarating.
Kutiladigan natija: sozlangan Branch Protection sahifasi skrinshoti.
8. Himoyalangan tarmoqni sinash o'rta
Branch Protection o'rnatilgach, terminaldan main tarmog'ida turib to'g'ridan-to'g'ri push qilishga urinib ko'ring. Terminal chiqarib bergan xatolik matnini tahlil qiling.
Kutiladigan natija: push rad etilganligi haqidagi terminal chiqishi.
9. Katta loyiha uchun "Reviewer Checklist" tuzish qiyin
Jamoangiz uchun har qanday PR'ni ko'rib chiqishda tekshirilishi shart bo'lgan 5 ta asosiy bo'limdan (Xavfsizlik, Unumdorlik, Kod uslubi, Testlar, Biznes mantiq) iborat mukammal nazorat hujjati (Audit Guide) yozing.
Kutiladigan natija: har bir bo'limida kamida 2 tadan aniq mezon bo'lgan professional checklist.
10. To'liq Code Review simulyatsiyasi qiyin
Do'stingiz (yoki o'zingizning ikkinchi akkauntingiz) bilan hamkorlikda PR oching. Unga Request changes bering, kamchiliklarni ko'rsating. Muallif ularni to'g'rilagach, tekshirib Approve bosing va squash merge qiling.
Kutiladigan natija: to'liq sikldan o'tgan PR sahifasining skrinshoti (sharhlar, tuzatishlar va yashil Approve belgisi).
11. Botlar yordamida avtomatlashtirilgan review (Linter CI) bonus
GitHub repozitoriyangizga oddiy GitHub Action (masalan, flake8 yoki ESLint linter) ulang. Yangi PR ochilganda kod uslubi avtomatik tekshirilib, xatolik bo'lsa qizil xoch bilan mergeni to'xtatib qo'yishini amalda ko'ring.
Kutiladigan natija: PR ostida avtomatik tekshiruv o'tgani yoki xatolik topgani haqidagi CI status skrinshoti.
O'zingizni tekshiring
- Code Review'ning dasturchi shaxsiy o'sishidagi eng katta ahamiyati nimada?
- "Nitpick" belgisini sharhga qo'yishning qanday madaniy foydasi bor?
- Code suggestion blokining odatiy matnli izohdan qanday afzalligi mavjud?
- Qachon
Approve, qachon esaRequest changesbosilishi shart? - Branch Protection sozlamalarida "Require approvals" nimani kafolatlaydi?
- Nega buyruq ohangidagi tanqid jamoada samarasiz hisoblanadi?
Uyga vazifa
Portfolio loyihangizda main tarmog'i uchun Branch Protection qoidasini yoqing (kamida 1 ta approve va to'g'ridan-to'g'ri pushni taqiqlash). Do'stingiz yoki o'zingiz yangi branchdan PR ochib, unga kamida 2 ta inline sharh (biri suggestion bilan) qoldiring va muvaffaqiyatli merge qiling.
