TGViewer
Tech Stuff Tech Stuff @techstuff100 · 1.21K subscribers
Post #305 929
یکی از نشونه‌های رایج طراحی نه‌چندان خوب، متد‌های Pass-through هست. یعنی متدی که تقریبا هیچ کاری نمی‌کنه و فقط ورودی‌ها رو به متد کلاس دیگه پاس میده. اینجا getUser هیچ منطق جدیدی اضافه نکرده و فقط نقش واسطه رو داره.

مشکل اینجاست که این متدها فقط تعداد APIهای کلاس رو بیشتر می‌کنن، بدون اینکه قابلیت جدیدی به سیستم اضافه کنن. علاوه بر اون وابستگی هم ایجاد می‌کنن؛ مثلا اگر اینترفیس getUser داخل UserRepository تغییر کنه، این متد هم باید تغییر کنه.

وجود چنین متد‌هایی معمولا نشون میده مرز مسئولیت بین کلاس‌ها شفاف نیست. اگر قابلیتی کاملا داخل یک کلاس پیاده‌سازی شده، بهتره متد مربوط به اون هم همون‌جا باشه، نه اینکه یک کلاس دیگه فقط درخواست رو فروارد کنه.

با برخورد به چنین کلاس‌هایی باید پرسید: دقیقا مسئولیت هر کدوم از این کلاس‌ها چیه؟ جواب این سوال خیلی وقت‌ها باعث میشه یکی از این کارها رو انجام بدید:
- کلاس سطح پایین رو مستقیما در اختیار استفاده‌کننده قرار بدید.
- مسئولیت‌ها رو بین کلاس‌ها دوباره تقسیم کنید.
- یا اگر عملا از هم جدا نیستن، اون‌ها رو با هم ادغام کنید.

#A_Philosophy_of_Software_Design

@techstuff100
  • ❤ 8
  • 🤔 2
More from @techstuff100
  1. Oct 9, 2026فاصله Levenshtein حداقل تعداد عملیات‌های ممکن (insertion، deletion و substitution) برای تب…
  2. Oct 6, 2026خروجی کد بالا (1) چیه؟ شاید اینطور فکر کنیم که وقتی به return "try" می‌رسیم، اجرای تابع مت…
  3. Oct 2, 2026قانون پارکینسون میگه کار اونقدر کش پیدا می‌کنه تا زمانی که برای تکمیلش داریم رو پر کنه. پر…
  4. Oct 1, 2026با بزرگ شدن LF باید slotهای بیشتری به hash tableمون اضافه کنیم که بهش میگن resizing. منطقی…
  5. Oct 1, 2026پرفورمنس hash table پرفورمنس hash tableها بطور متوسط (average case) پیچیدگی زمانی O(1) دار…
  6. Sep 29, 2026چطور ریموت کار کنیم ریموت کار کردن فقط این نیست که لپ‌تاپمون رو برداریم و از خونه کار کنیم…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →