Decompose an Image Upload Service
Rasm yuklash xizmatini bo'laklashtiring
Oldingi to'rtta darsda o'rgangan barcha g'oyalarni (savol berish, nomlash, chalkashlikni topish) birlashtirib, to'liq stsenariyni oxirigacha bo'laklashtiramiz: "Foydalanuvchilar profil rasmini yuklay olishi kerak."
Avval — Questions, Not Guesses darsidagi kabi, noaniq joylarni aniqlaymiz va oqilona taxminlar bilan to'ldiramiz: fayl formatlari — JPEG/PNG, maksimal hajm — 5MB, eski rasm yangisi bilan almashtiriladi, xato bo'lsa foydalanuvchiga aniq xabar ko'rsatiladi.
Endi — Name the Components va Spot the Tangled Responsibilities darslaridagi kabi, mustaqil komponentlarga ajratamiz:
| Komponent | Mas'uliyati | Nimadan qaram (depends on) |
|---|---|---|
| Uploader (HTTP handler) | So'rovni qabul qiladi, faylni oladi | Validator, Storage |
| Validator | Format va hajmni tekshiradi | Hech narsadan (mustaqil) |
| Storage | Faylni saqlash joyiga yozadi, URL qaytaradi | Hech narsadan (mustaqil) |
| ProfileUpdater | Foydalanuvchi yozuvidagi rasm URL'ini yangilaydi | Database |
E'tibor bering: Validator va Storage hech narsadan qaram emas — ular mustaqil, o'z-o'zicha sinaladigan qismlar. Uploader esa ikkalasini ham ishlatadi (orchestrates), lekin ularning ichki ishlash tafsilotlarini bilishi shart emas — bu Real-World Patterns kursidagi HTTP handler naqshining, va YAML Data Pipeline kursidagi "kichik funksiyalarni birlashtirish" g'oyasining bevosita davomi.
Bu jadval — hali bitta ham kod qatori yozilmasdan turib, butun tizimning arxitekturasi. Keyingi darslarda siz bu jadvaldagi "nimadan qaram" ustunini — komponentlar orasidagi chegaralarni — chuqurroq o'rganasiz.
Key Takeaway
Key Takeaway:
To'liq bo'laklashtirish jarayoni: noaniq joylarni savol/taxmin bilan to'ldirish, so'ngra mustaqil komponentlarni nomlab, ularning bir-biriga bog'liqligini jadval yoki diagramma ko'rinishida chizish — hammasi kod yozishdan oldin.
NEXT UP
What Crosses the Boundary