Review a Package Layout
Paket tuzilmasini ko'rib chiqing
Bo'laklashtirish faqat qog'ozda qoladigan mashq emas — u to'g'ridan-to'g'ri Packages & Organization kursida ko'rgan haqiqiy Go paket tuzilmasiga aylanadi. Keling, rasm yuklash tizimimiz uchun taklif qilingan ikkita paket tuzilmasini solishtiramiz.
// Variant A
myapp/
├── main.go
└── images/
├── uploader.go
├── validator.go
├── storage.go
└── profile.go
// Variant B
myapp/
├── main.go
└── images.go // hammasi bitta faylda: Uploader, Validator, Storage, ProfileUpdaterVariant A — Decompose an Image Upload Service darsidagi jadvalimizga to'g'ridan-to'g'ri mos keladi: har bir komponent o'z faylida, nomi bilan bir xil. Variant B esa barcha mas'uliyatni bitta faylga jamlaydi — bu Spot the Tangled Responsibilities darsida ko'rgan "chalkashib ketgan mas'uliyat" muammosining fayl darajasidagi ko'rinishi: images.go fayli nima qilishini nomidan bilib bo'lmaydi.
Bu ikkalasi ham kompilyatsiya bo'ladi — Go kompilyatori sizga qaysi tuzilma "to'g'ri" ekanini aytmaydi. Bu — sof muhandislik qarori, va aynan shu YAML Data Pipeline hamda Rate Limiter loyihalaringizda ko'rgan "kichik, aniq nomlangan funksiyalar" g'oyasining fayl/paket darajasidagi versiyasi: struktura kodni o'qiydigan odam uchun xarita bo'lib xizmat qilishi kerak, faqat kompilyator uchun emas.
Key Takeaway
Key Takeaway:
Paket va fayl tuzilmasi — bo'laklashtirish qarorlarining jismoniy ifodasi. Har bir komponent o'z faylida, nomi bilan mos bo'lsa, kodni o'qiyotgan har qanday kishi (shu jumladan olti oydan keyingi sizning o'zingiz) tizim xaritasini darhol tushunadi.
NEXT UP
Plan the First Sprint