Spot the Tangled Responsibilities
Chalkashib ketgan mas'uliyatlarni toping
Name the Components darsida siz komponentlarga nom berishni mashq qildingiz. Endi teskari yo'nalishda: berilgan, allaqachon chalkash tavsifni olib, undagi aralashib ketgan mas'uliyatlarni toping.
Quyidagi tavsifga qarang: "SaveUser funksiyasi — foydalanuvchi ma'lumotini tekshiradi, uni bazaga yozadi, xush kelibsiz emailini yuboradi, va faoliyat jurnaliga yozuv qo'shadi."
Bu bitta funksiya nomi ostida to'rtta mustaqil mas'uliyat yashiringan: tekshirish (validation), saqlash (persistence), xabar yuborish (notification), va jurnal yuritish (logging). Bularning har biri boshqa sabab bilan o'zgarishi mumkin: email xabari matni o'zgarsa, saqlash mantig'iga tegishning hojati yo'q; bazaning sxemasi o'zgarsa, email yuborish kodiga tegishning hojati yo'q.
- •Agar funksiya tavsifida 3+ ta fe'l bo'lsa ("tekshiradi, yozadi, yuboradi, qo'shadi") — bu chalkashib ketgan mas'uliyat belgisi
- •"Bu funksiyani nega o'zgartirishimiz kerak bo'lishi mumkin?" deb so'rang — agar javoblar bir-biriga aloqasiz bo'lsa, funksiya juda ko'p ish qilyapti
- •Har bir mas'uliyatni o'z nomi bilan ataganingizda (Validator, Repository, Notifier, Logger), ular allaqachon to'rtta alohida komponentga aylanadi
Bu — Interfaces & Polymorphism kursidagi kichik, bitta-metodli interfeyslar afzalligining muhandislik jarayonidagi ko'rinishi: kichik, bitta mas'uliyatli qismlar alohida-alohida tushunish, sinash va o'zgartirish osonroq bo'ladi. Muammo hali kod yozilmasdan turib ham "chalkash"ligini payqash — keyinchalik katta, chigal funksiyalarni qayta qurishdan ancha arzon.
Key Takeaway
Key Takeaway:
Bir nechta bog'liq bo'lmagan sababga ko'ra o'zgarishi mumkin bo'lgan funksiya yoki komponent — chalkashib ketgan mas'uliyatlarga ega. Ularni ajratib, har biriga alohida nom berish orqali aniqlash mumkin.
NEXT UP
Decompose an Image Upload Service