dbit.one© 2026
000
booting_
Loading experience0%
dbit.one

Muhandislik standartlari

Yangilangan 2026-08-15

Keys natijani koʻrsatadi. Standartlar esa u sizning loyihangizda takrorlanadimi — shuni koʻrsatadi. Quyida biz qanday ishlashimiz; har bir band birovning reglamentidagi ibora emas, oʻz ishimizdan olingan misol bilan tasdiqlangan.

01

Qarorlar

Dasturlashdagi koʻpchilik muvaffaqiyatsizlik yomon kod emas — oʻlchovsiz qabul qilingan ishonchli qaror.

Avval oʻlchaymiz, keyin tuzatamiz

Sekinlik sababi haqidagi taxmin deyarli doim notoʻgʻri. Optimallashtirishdan oldin muammoni takrorlaymiz va raqam olamiz, tuzatishdan keyin — ikkinchisini.

Misol

Saytimizning birinchi ekrani 6,4 soniyada yuklanardi. Koʻrinib turgan aybdor — ogʻir 3D fon — ikkinchi darajali boʻlib chiqdi: aybdor server hammaga chizadigan qoplama edi. Tuzatish 2,2 soniya berdi; oʻlchov usuli bilan tahlil blogda.

Koddan oldin arxitektura

Tuzilma, maʼlumot va tizim chegaralari haqidagi qarorlar birinchi qatordan oldin qabul qilinadi. Hujjatni qayta yozish xizmatni qayta yozishdan arzon.

Shubha boʻlsa — sekin qurilmada tekshiring

Ishlab chiqish tez mashinalarda, foydalanish esa har xilida boʻladi. Biz sekin protsessor va yomon tarmoqda tekshiramiz.

Misol

«Zaif noutbuklarda sekinlashadi» shikoyatini dasturiy render bilan takrorladik: sahna kadri 175 ms, usiz 17 ms. Tuzatishdan keyin birinchi ekran besh oʻrniga sekundiga 104 kadr beradi.

02

Kod

Izoh «nima uchun»ni tushuntiradi, «nima»ni emas

Qator nima qilishi qatordan koʻrinadi. Izohda sabab boʻladi: nega shunday, avval nima sinalgan va «ravshan» yoʻl bilan qayta yozilsa nima buziladi.

Misol

Repozitoriyimizda nginx direktivasi yonida `add_header` location ichida server darajasidan meros sarlavhalarni bekor qilishi yozilgan. Bu qatorsiz keyingi odam «takroriy» sarlavhalarni olib tashlaydi va himoyani jimgina yechadi.

Bogʻliqlik oʻzini oqlashi kerak

Har bir kutubxona — mahsulotingizdagi begona kod, begona zaifliklar va begona yangilanishlar. Bitta funksiya uchun uni olmaymiz.

Misol

Tasvirlarni qayta siqish vositasi shu ish vaqtiga oʻrnatiladi va darrov bogʻliqliklardan olib tashlanadi. Xat qabul qilib javob beradigan pochta xizmati bitta bogʻliqlikda ishlaydi.

Kod yozilganidan koʻra koʻproq oʻqiladi

Bir yildan keyin uni yozmagan odam — jumladan sizning boʻlajak dasturchingiz — tushunadigan qilib yozamiz. Bu xushmuomalalik emas, egalik qilish narxi.

03

Tekshiruvlar

Xatoni chiqarishdan oldin ushlash eng arzon, foydalanuvchidan eshitish eng qimmat.

Har bir kommit toʻrt tekshiruvdan oʻtadi

Turlar, linter, yigʻish va kontent nazorati — oʻzgarish serverga tushishidan oldin. Oʻtmasa — chiqmaydi.

Har bir ushlangan xato regressiyaga aylanadi

Tuzatish yetarli emas: u qaytmasligi kerak. Har bir jiddiy nosozlik chiqarishdan oldin ishlaydigan tekshiruvga aylanadi.

Misol

WebGL boʻlmasa sayt butunlay boʻsh ekranga qulashi aniqlangach, uchta rad etish stsenariysini tekshiradigan skript paydo boʻldi.

Kontent kod kabi tekshiriladi

Buzilgan ichki havola, manzilsiz maqola, takroriy langar yoki juda uzun tavsif yigʻishni turlar xatosi kabi yiqitadi.

Suzuvchi test — bu xato, ob-havo emas

«Yana bir marta ishga tushiring» — javob emas. Test uch yuz yurishda bir marta yiqilsa, sababi bor: oʻsha safar operatsion tizim tanlagan aniq bajarilish tartibi.

Misol

Buning uchun ochiq kodli vosita yozdik — unflake. U jadvalni operatsion tizimdan tortib oladi: vaqt, taymerlar va tayyor kolbeklar tartibi siddan olinadi, shuning uchun yiqilish istalgan mashinada bayt-baytigacha takrorlanadi. TypeScript, MIT, bogʻliqliklarsiz, npm da chop etilgan.

Yashil yurish — dalil emas

Doim oʻtadigan testlar toʻplami xatolarni tutayotgan ham boʻlishi mumkin, umuman qaramayotgan ham — rangning oʻzidan buni ajratib boʻlmaydi. Demak, tekshiruvning oʻzini fosh qilish kerak: u yiqilishi shart boʻlgan joyda yiqilishini koʻrsatish.

Misol

Ikkita ochiq repozitoriyimiz ana shunday ushlab turiladi. bulwark — Raft konsensus algoritmi implementatsiyasi — xatolar muzeyiga ega: yettita eksponat, har biri algoritmning aynan bitta qoidasini oʻchiradi va xarness uni sid hamda buzilgan xossa nomi bilan tutishi shart. adya — tranzaksiyalar izolyatsiyasi dvigateli — har bir darajani ikki tomondan tekshiradi: u daraja oldini olishi shart boʻlgan narsani ishlab chiqarmaydi va keyingi daraja oldini oladigan narsani ishlab chiqaradi. Ikkinchi yarmisiz birinchisi boʻsh: barcha tranzaksiyalarni rad etadigan dvigatel hamma darajada «toza» boʻlardi, hech narsa topmaydigan tekshiruv esa u bilan rozi boʻlardi. Xuddi shu usul pnueli da eng uzoqqa olib borilgan: buzilgan qisqartirish ishlaydiganidek javob beradi — «buzilish topilmadi», — shuning uchun yonida toʻliq saralash qoldirilgan, sekin va xato qila olmaydigan, verdiktlar esa mos kelishi shart.

04

Chiqarish

Yigʻish ishlayotgan saytga xalaqit bermaydi

Yangi versiya alohida katalogda yigʻiladi va ikkita nom almashtirish bilan almashadi. Foydalanuvchi yarim yigʻilgan saytni koʻrmaydi.

Misol

Avval yigʻish ishlayotgan versiya ustida borardi va qirq soniya davomida sayt xato qaytarardi. Endi almashish millisoniyalarda.

Chiqarishdan keyin javob tekshiriladi

Yigʻish oʻtishi, ilova esa ishga tushishda qulashi mumkin. Biz oʻttiz soniya javob kutamiz.

Orqaga qaytish avtomatik

Yangi versiya javob bermasa, avvalgisi qaytadi — odamsiz va tunda qoʻngʻiroqsiz.

05

Oʻzgarishlar tarixi

Jurnalda «nima uchun» yoziladi

«Barqarorlik yaxshilandi» — bu yozuv emas, uning yoʻqligi. Biz muammo nima edi, qanday koʻringan va nima oʻzgargan deb yozamiz.

Versiya raqami oʻzgarish tabiatini aytadi

Tuzatish, yangi imkoniyat va mos kelmaydigan oʻzgarish kayfiyat bilan emas, raqam bilan farqlanadi.

Ataylab qilinmagani ham yoziladi

Jurnalda «ataylab qilinmadi» boʻlimi bor: u koʻrinishidan ravshan tuzatish nega xato boʻlishini tushuntiradi va keyingi odamning haftalarini tejaydi.

06

Topshirish

Kod va kirishlar sizniki

Manba, infratuzilma va hujjatlar mijozga topshiriladi. Mahsulot ishlashi uchun zarur hech narsani oʻzimizda qoldirmaymiz.

Server konfiguratsiyasi repozitoriyda yotadi

Administrator xotirasida yoki yozishmada emas: jangovar sozlamalar nusxasi kod yonida saqlanadi — oʻqish, koʻrikdan oʻtkazish va koʻchishda tiklash uchun.

Maxfiy kalitlar messenjerda yurmaydi

Kalitlar va parollar ombor yoki sizning konturingiz orqali uzatiladi, serverda esa repozitoriydan tashqarida yopiq huquqli fayllarda yotadi.

Biz nima qilmaymiz

Taqiqsiz qoidalar hech narsani anglatmaydi: «yaxshi kod yozamiz» bilan hamma rozi. Mana biz nimadan voz kechamiz — tezroq boʻlsa ham.

Yangilik uchun yangi freymvorkka koʻchirmaymiz

Texnologiyani almashtirish vazifa bilan oqlanadi, versiya chiqqani bilan emas. Har bir migratsiya — mijoz toʻlaydigan oylar va ishlayotgan narsadagi yangi xatolar.

Yomon xabarni yashirmaymiz

Buzilgan muddat va oʻzimizda topilgan xato haqida darrov aytamiz. Oʻz muvaffaqiyatsizligimiz tahlili raqamlari bilan blogda eʼlon qilingan.

Kuchimiz yetmasa olmaymiz

Qoʻngʻiroqdagi rad javobi mijoz uchun uch oydan keyingi qulashdan arzon. Baʼzan halol javob — «bu tizimni tuzatgandan koʻra qayta yozish foydali».

«Vaqtinchalik» yechimlarni yozib qoʻymay qoldirmaymiz

Vaqtinchalik doimiydan uzoq yashaydi. Shoshib qilingan boʻlsa — jurnalda nima va qachon qayta qilinishi kerakligi yozilgan.

Buni saytning oʻzida tekshirish mumkin

Bu yerda yozilganlarning hammasi avvalo shu saytga qoʻllanadi: oʻlchovlar, regressiyalar, chiqarishdagi orqaga qaytish, oʻzgarishlar jurnali. Raqamli tahlillar blogda — bizga yozishdan oldin oʻqish mumkin.