GoDasturchi
Spot the Tangled Responsibilities

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

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