Build It Yourself or Take a Dependency
O'zingiz yasang yoki tashqi bog'liqlikni oling
Uyingizda devor rangini o'zgartirmoqchisiz. Bo'yoqni o'zingiz tayyorlashni o'ylab ko'rasizmi — pigment aralashtirib, tarkibini hisoblab? Albatta yo'q: do'kondan tayyor bo'yoq sotib olasiz, chunki buni professional zavod siz uydagi vositalar bilan qila olganingizdan ancha yaxshi qiladi. Lekin uyingizga MAXSUS, hech qayerda topilmaydigan devor rangi kerak bo'lsa — o'zingiz aralashtirasiz. Tanlov — vazifaning naqadar "maxsus" ekanligiga bog'liq.
Dasturlashda bu tanlov doimo takrorlanadi: kerakli funksionallikni o'zingiz yozasizmi, yoki tayyor kutubxona (dependency)ni olasizmi? Ikkalasi ham to'g'ri javob bo'lishi mumkin — muhandislik hikmati farqni ko'ra bilishda.
| Mezon | O'zingiz yozing | Tashqi bog'liqlik oling |
|---|---|---|
| Vazifa qanchalik murakkab va xavfli? | Sodda, aniq (masalan, ikkita sonni qo'shish) | Murakkab va xato qimmatga tushadi (masalan, kriptografiya) |
| Buni sizdan yaxshiroq qilgan bormi? | Yo'q, hech kim buni siz kabi maxsus qilmagan | Ha, yuzlab muhandis yillar davomida sayqallagan |
| Kutubxona qancha "og'ir"? | — | Faqat bitta kichik funksiya uchun butun katta paket kerakmi? |
Oltin qoida: xavfli, murakkab, yaxshi sinalgan yechim talab qiladigan narsalarni (parolni xeshlash, JSON parsing, HTTP server, kriptografiya) o'zingiz yozmang — bu sohalarda kichik xato katta xavfsizlik teshigiga aylanadi, va Go standart kutubxonasi yoki yaxshi tanilgan paketlar buni sizdan ancha yaxshi qilgan. Aksincha, sodda, loyihangizga xos mantiqni (masalan, "foydalanuvchi yoshi 18dan katta bo'lsa ruxsat ber") tashqi kutubxonaga bog'lab qo'ymang — bu bitta "if" qatoridir, unga butun paket keltirish ortiqcha og'irlik.
Har bir tashqi bog'liqlik — o'zi bilan narx olib keladi: uni yangilab turish kerak, uning ichida xavfsizlik teshigi topilishi mumkin, uning muallifi uni qo'llab-quvvatlashni to'xtatishi mumkin, va u loyihangiz o'lchamini kattalashtiradi. Bu narx — Technical Debt darsida ko'rgan "kelajakda to'lanadigan qarz"ga o'xshaydi: siz buni HOZIR (tezroq yozish orqali) yutasiz, lekin KEYIN (yangilash, moslashtirish orqali) to'laysiz.
Amaliy savol shunday qo'yiladi: "Agar bu kutubxonani ishlatmasam, buni to'g'ri qilish uchun menga necha kun kerak bo'ladi — va shu kunlar ichida qancha xato qilaman?" Agar javob "ko'p kun, ko'p xato" bo'lsa — kutubxonani oling. Agar javob "o'n daqiqa, xato ehtimoli yo'q" bo'lsa — o'zingiz yozing.
Key Takeaway
Key Takeaway:
Murakkab, xavfli yoki yaxshi sinalgan yechim talab qiladigan narsalar uchun tashqi bog'liqlik oling — buni sizdan yaxshiroq qilishgan. Sodda, loyihaga xos mantiq uchun o'zingiz yozing — bitta "if" uchun butun kutubxona keltirish ortiqcha og'irlik.
NEXT UP
Technical Debt: Loan or Trap?