فرض کن در پروژه PHP، منطق ارسال ایمیل، ثبت سفارش و پرداخت را همگی داخل یک متد قرار دادهای.
public function checkout($data)
{
// Validate order
// Save order
// Process payment
// Send email
// Update inventory
}
در نگاه اول همهچیز مرتب به نظر میرسد؛ اما با بزرگشدن پروژه، تغییر هر بخش ممکن است روی بخشهای دیگر اثر بگذارد.
راهکار این نیست که برای هر خط کد یک کلاس بسازیم.
بهتر است مسئولیتها را متناسب با پیچیدگی پروژه جدا کنیم:
CheckoutService
|
+-- OrderService
|
+-- PaymentService
|
+-- InventoryService
|
+-- NotificationService
حالا میتوانیم پرداخت را مستقلتر تست کنیم یا روش ارسال اعلان را تغییر دهیم، بدون اینکه کل فرایند سفارش را بازنویسی کنیم.
البته اگر پروژه بسیار کوچک است، این میزان جداسازی ممکن است فقط پیچیدگی اضافه ایجاد کند.
اصل مهم معماری: کد را نه بیش از حد ساده نگه دار و نه بیدلیل پیچیده کن؛ مرزها را بر اساس مسئولیتهای واقعی پروژه تعیین کن.
@CodeVerse_dev