“Ishlaydi — tegma” tamoyili — bu ishlayotgan kodni jiddiy sababsiz o'zgartirmaslikni tavsiya qiladigan yozilmagan dasturlash qoidasidir, hatto uning tuzilishi optimal bo'lmasa ham. Tamoyil empirik kuzatishga asoslanadi: har qanday o'zgarish yangi xatolikni keltirib chiqarish xavfini olib keladi va refaktoringning foydasi sarflangan kuchga arzimasligi mumkin. Vikipediya (2026) ma'lumotlariga ko'ra, bu ibora muhandislik, siyosat va dasturlashda o'zgarishlarni boshqarishning konservativ strategiyasi sifatida keng qo'llaniladi.
Asosiy fikrlar
“Ishlaydi — tegma” tamoyili (ingl. “If it ain't broke, don't fix it”) — bu dasturchilarni yetarli asoslarsiz ishlayotgan kodga o'zgartirish kiritishdan ogohlantiruvchi empirik qoidadir. Tamoyilning asosida oddiy statistika yotadi: nuqsonlarning katta qismi aynan mavjud kodni o'zgartirish jarayonida yuzaga keladi.
Tamoyil dogma emas — bu noaniqlik sharoitida qaror qabul qilishga yordam beruvchi evristikadir. Kod bazasi qanchalik murakkab va chalkash bo'lsa, “begunoh” o'zgarish hech kim kutmagan narsani buzishi ehtimoli shunchalik yuqori.
Tadqiqotga ko'ra, Microsoft korporatsiyasi (2024), ishlab chiqarishdagi barcha kritik hodisalarning taxminan 60% i yaxshi niyat bilan qilingan, ammo real yuk sharoitida yetarlicha sinovdan o'tmagan so'nggi kod o'zgarishlari bilan bog'liq.
Ibora “If it ain't broke, don't fix it” XX asr o'rtalaridagi Amerika muhandislik madaniyatiga borib taqaladi. Eng dastlabki hujjatlashtirilgan foydalanish AQSh Senatining Moliya qo'mitasida ishlagan va ortiqcha tartibga solishga qarshi chiqqan Bert Lansga (1977) tegishli.
Dasturlashga tamoyil apparat muhandisligidan kelgan, bu yerda ishlayotgan mikrosxemani yangisiga almashtirish oldindan aytib bo'lmaydigan oqibatlarga olib kelishi mumkin edi. Dasturiy ta'minot kontekstida bu tamoyil tizimlarning murakkabligi oshishi va legasi kodning paydo bo'lishi bilan ayniqsa keng tarqaldi.
Qizig'i shundaki, dasturlashda tamoyilning teskari tomoni ham bor — “ishlaydi, lekin tegmaslik yaxshiroq” ko'pincha refaktoringdan bosh tortish uchun bahona bo'ladi, bu uzoq muddatda texnik qarzning kritik darajada to'planishiga olib keladi. Thoughtworks konsalting kompaniyasining (2023) ma'lumotlariga ko'ra, loyihalarning taxminan 40% i o'zgarishlarga nisbatan haddan tashqari konservatizm tufayli jiddiy muammolarga duch keladi.
“Ishlaydi — tegma” tamoyili ayniqsa xato narxi o'zgarishlarning potentsial foydasidan yuqori bo'lgan muayyan vaziyatlarda dolzarbdir.
Legasi kodda testlar bilan qoplanmagan, har bir o'zgarish rus ruleti o'yinidir. Agar dasturchi o'zgarish qo'shni modullarni buzganligini tekshira olmasa, eng yaxshi strategiya ishlayotgan kodga tegmaslikdir. Istisno — faqat kritik xatolar yoki xavfsizlik talablari.
To'xtab qolish mumkin bo'lmagan yoki xato narxi juda katta bo'lgan tizimlarda — tibbiy dasturiy ta'minot, avionika, moliyaviy tranzaksiyalar — “ishlaydi — tegma” tamoyili de-fakto standartdir. Har bir o'zgarish ko'p bosqichli kelishish va sinovdan o'tkaziladi.
Agar chiqarish ertaga bo'lsa va kod ishlayotgan bo'lsa — uning arxitekturasini yaxshilashga urinmang. Faqat chiqarish funksionalligiga bevosita ta'sir qiladigan narsani o'zgartiring. Refaktoringni keyingi sprintga qoldiring (lekin uni unutmang).
| Vaziyat | Tamoyilni qo'llash? | Alternativa |
|---|---|---|
| Kod ishlaydi, lekin xunuk | Ha, testlar bo'lmasa | Testlar yozing, keyin refaktoring |
| Ma'lum xatoli kod | Yo'q | Xatoni test bilan tuzating |
| Xavfsizlik zaifligi | Yo'q | Darhol tuzating |
| Eskirgan bog'liqlik | Qisman | Test bilan yangilang |
| Past unumdorlik | SLA ga bog'liq | Profillang, keyin optimallang |
Tamoyilga “ishlaydi — tegma” ko'r-ko'rona rioya qilish cheksiz refaktoringdan kam xatarli emas. Keling, asosiy xavflarni ko'rib chiqaylik.
Agar har bir dasturchi bu tamoyilga amal qilsa, kod bazasi tezda eskirgan yechimlar, “qo'ltiq tayoqchalari” va optimal bo'lmagan algoritmlardan iborat “qatlamli tort”ga aylanadi. Ertami-kechmi texnik qarz chidab bo'lmas holga keladi — har bir o'zgarish haftalar lab tahlil talab qiladi.
Ba'zan xavfli ko'rinadigan o'zgarish aslida unumdorlik yoki xavfsizlikni sezilarli darajada yaxshilaydi. “Ishlaydi — tegma” tamoyili o'lchanadigan foyda keltiradigan — server xarajatlarini kamaytirish, sahifa yuklanishini tezlashtirish, xavfsizlikni oshirish — o'zgarishlarni bloklamasligi kerak.
Jamoa yillar davomida kodning ma'lum qismlariga tegmasa, ular qanday tuzilganligini tushunishni yo'qotadi. Asosiy dasturchi ketadi — va kod qo'llab-quvvatlash imkoniyati bo'lmagan legasiga aylanadi. Tamoyil loyihaning uzoq muddatli qo'llab-quvvatlanishini hisobga olgan holda qo'llanilishi kerak.
Optimal strategiya — tamoyilga ko'r-ko'rona emas, balki kontekstni hisobga olgan holda ongli ravishda amal qilishdir. Refaktoring kerak, ammo xavfsiz bo'lishi kerak.
Skaut qoidasi dasturlashda: “Kodni topganingdan tozaroq qoldir”. Agar dasturchi modulga o'zgarish kiritsa, uning tuzilishini yaxshilashi kerak, lekin oqilona chegaralarda. Hammasini boshidan yozmaslik, hech bo'lmaganda o'qib bo'lmaydigan o'zgaruvchilarni qayta nomlash va sharhlar qo'shish.
Testlar — “ishlaydi — tegma” tamoyilini xavfsiz qo'llashning yagona yo'lidir. Agar kod testlar bilan qoplangan bo'lsa, har bir refaktoring bashorat qilinadigan bo'ladi: dasturchi kodni o'zgartiradi, testlarni ishga tushiradi va hech narsa buzilmaganligini ko'radi. Testsiz — tegma. Testlar bilan — dadil refaktor qil.
// Misol: test qamrovi ostida xavfsiz refaktoring
class PriceCalculator {
fun calculatePrice(basePrice: Double, discount: Double): Double {
// Eski, ammo ishlayotgan kod
return basePrice - (basePrice * discount / 100.0)
}
}
// Regressiyadan himoya qiluvchi test
class PriceCalculatorTest {
fun testCalculatePrice() {
val calc = PriceCalculator()
assertEquals(90.0, calc.calculatePrice(100.0, 10.0))
}
}
Bu misol to'g'ri yondashuvni ko'rsatadi: avval test, keyin refaktoring. Test o'tsa — o'zgarish xavfsiz. “Ishlaydi — tegma” tamoyili “testlar ostida ishlaydi — dadil refaktor qil”ga aylanadi.
Haqiqiy stsenariylarni ko'rib chiqaylik, ularda “ishlaydi — tegma” tamoyili ham qutqaruvchi, ham halokatli bo'lgan.
Dasturchi aniqladiki, sanalarni qayta ishlash kodida YYYY o'rniga DD/MM/YY formati ishlatilgan. Kod 2000 yildan 2025 yilgacha to'g'ri ishlagan. “Tuzatish” istagiga qaramay — kodni o'z holicha qoldirdi, faqat sharh yozish bilan cheklandi. 2026 yilda kompaniya tizimni yangiladi va yangi yechim asrlarni to'g'ri qayta ishlaydigan bo'ldi. Muddati oldidan o'zgartirish ishlayotgan mantiqni buzgan bo'lar edi.
Muhandis qaror qildi eski, ammo ishlayotgan ma'lumot import kodini “yaxshilash” uchun uni zamonaviy kutubxona bilan almashtirsin. U eski kutubxona hujjatlashtirilmagan maxsus chekka holatni qayta ishlashini hisobga olmadi. Chiqarishdan so'ng — ommaviy ma'lumot yo'qolishi. “Ishlaydi — tegma” tamoyili buzildi va xato narxi jamoaning ikki haftalik tiklash ishi bo'ldi.
Ko'p beriladigan savollar
Yo'q, tamoyilga ko'r-ko'rona rioya qilish texnik qarzning to'planishiga va loyiha egiluvchanligining yo'qolishiga olib keladi. Optimal yondashuv — o'zgarish xavfi potentsial foydadan yuqori bo'lgan vaziyatlarda ongli qo'llash. Har bir holatni alohida baholash muhim.
Tamoyilni buzish xavfsizlik zaifliklari, foydalanuvchi ma'lumotlariga ta'sir qiluvchi kritik xatolar aniqlanganda va ma'lum zaifliklarga ega bog'liqliklarni yangilash zarur bo'lganda kerak. Bu hollarda harakatsizlik xavfi o'zgarishlar xavfidan yuqori.
Yagona xavfsiz yo'l — avval kodni testlar bilan qoplash (xarakterizatsion testlar), so'ngra refaktoringni kichik qadamlar bilan doimiy test yurgizish bilan bajarish. Test himoyasisiz “ishlaydi — tegma” tamoyili qat'iy qo'llanilishi kerak.
Tajribali dasturchilar tamoyilni ongli ravishda buzadilar — ular joriy amalga oshirishning noaniq oqibatlarini ko'radilar: kelajakdagi xatolar, unumdorlikdagi tor joylar, masshtablash muammolari. Ularning qarorlari tajribaga asoslanadi, o'zgarish qo'rquviga emas.
Muvozanat test madaniyati va kod ko'rib chiqish orqali erishiladi. Agar kod testlar bilan qoplangan bo'lsa, refaktoring xavfsiz. Agar bo'lmasa — har bir o'zgarish minimal zarur bo'lishi kerak. “Ishlaydi — tegma” tamoyili o'zgarishlarni taqiqlash emas, balki onglilik talabidir.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.
Shuningdek o'qing