GoDasturchi
What Crosses the Boundary

What Crosses the Boundary

Chegaradan nima o'tadi

Decompose an Image Upload Service darsida komponentlarni nomladik va ularning bog'liqligini belgiladik. Endi muhim savol: ikkita komponent orasida aynan nima uzatiladi? Bu — Interfaces & Polymorphism kursidagi "interfeys — shartnoma" g'oyasining kodga tushishdan oldingi ko'rinishi.

Validator komponentini oling. Uni chaqiradigan Uploader bilan orasidagi chegarani aniq belgilash kerak: Validatorga nima kiradi (xom fayl baytlarimi? fayl nomi ham keraKmi?), va undan nima chiqadi (faqat true/false? yoki xato sababi haqida batafsil xabar ham)?

SavolYomon chegaraYaxshi chegara
Validator nimani qabul qiladi?Butun HTTP so'rovini (r *http.Request)Faqat fayl baytlari va nomi
Validator nimani qaytaradi?Faqat bool (nega rad etilgani noma'lum)error — sababini o'z ichiga oladigan

"Yomon chegara" ustunidagi variant — Validatorga butun HTTP so'rovini berish — uni HTTP bilan bog'lab qo'yadi: endi uni HTTP'siz muhitda (masalan, fayl orqali yuklashda) qayta ishlatib bo'lmaydi. "Yaxshi chegara" esa Validatorni HTTP haqida umuman bilmaydigan, mustaqil qismga aylantiradi — bu Packages & Organization kursidagi "paketlar orasidagi aniq, tor interfeys" g'oyasining aynan o'zi.

Chegaradan kam narsa o'tishi odatda ko'p narsa o'tishidan yaxshiroq: komponentga faqat unga kerakli minimal ma'lumotni bering, u sizga faqat chaqiruvchiga kerakli minimal ma'lumotni qaytarsin. Bu komponentni sinash, tushunish va boshqa kontekstda qayta ishlatishni osonlashtiradi.

Key Takeaway

Key Takeaway:

Ikkita komponent orasidagi chegarani belgilaganda, "aynan nima kiradi, aynan nima chiqadi"ni aniq qiling. Komponentga kerakidan ortiq ma'lumot (masalan, butun HTTP so'rovi) berish uni keraksiz tarzda boshqa qismlarga bog'lab qo'yadi.

NEXT UP

Where Does It Belong?

What Crosses the Boundary

Chegaradan nima o'tadi

Decompose an Image Upload Service darsida komponentlarni nomladik va ularning bog'liqligini belgiladik. Endi muhim savol: ikkita komponent orasida aynan nima uzatiladi? Bu — Interfaces & Polymorphism kursidagi "interfeys — shartnoma" g'oyasining kodga tushishdan oldingi ko'rinishi.

Validator komponentini oling. Uni chaqiradigan Uploader bilan orasidagi chegarani aniq belgilash kerak: Validatorga nima kiradi (xom fayl baytlarimi? fayl nomi ham keraKmi?), va undan nima chiqadi (faqat true/false? yoki xato sababi haqida batafsil xabar ham)?

SavolYomon chegaraYaxshi chegara
Validator nimani qabul qiladi?Butun HTTP so'rovini (r *http.Request)Faqat fayl baytlari va nomi
Validator nimani qaytaradi?Faqat bool (nega rad etilgani noma'lum)error — sababini o'z ichiga oladigan

"Yomon chegara" ustunidagi variant — Validatorga butun HTTP so'rovini berish — uni HTTP bilan bog'lab qo'yadi: endi uni HTTP'siz muhitda (masalan, fayl orqali yuklashda) qayta ishlatib bo'lmaydi. "Yaxshi chegara" esa Validatorni HTTP haqida umuman bilmaydigan, mustaqil qismga aylantiradi — bu Packages & Organization kursidagi "paketlar orasidagi aniq, tor interfeys" g'oyasining aynan o'zi.

Chegaradan kam narsa o'tishi odatda ko'p narsa o'tishidan yaxshiroq: komponentga faqat unga kerakli minimal ma'lumotni bering, u sizga faqat chaqiruvchiga kerakli minimal ma'lumotni qaytarsin. Bu komponentni sinash, tushunish va boshqa kontekstda qayta ishlatishni osonlashtiradi.

Key Takeaway

Key Takeaway:

Ikkita komponent orasidagi chegarani belgilaganda, "aynan nima kiradi, aynan nima chiqadi"ni aniq qiling. Komponentga kerakidan ortiq ma'lumot (masalan, butun HTTP so'rovi) berish uni keraksiz tarzda boshqa qismlarga bog'lab qo'yadi.

NEXT UP

Where Does It Belong?