مو كل كود شغال يعني كود صحيح.
في فرق كبير بين نظام بيشتغل اليوم ونظام بيقدر يعيش سنين بدون ما يتحول لعبء.
أغلب المشاكل ما بتطلع أول يوم، بتطلع لما بدك تضيف ميزة جديدة أو تعدّل منطق بسيط، وفجأة بتطلعلك المشاكل من كل الاتجاهات.
هون بيجي دور مبادئ SOLID.
واليوم مع المبدأ الثاني: Open / Closed Principle – OCP
المبدأ يقول: الكلاس يجب أن يكون مفتوحًا للتوسعة ومغلقًا للتعديل.
يعني: إضافة ميزة جديدة لا تتطلب تعديل الكود القديم، بل توسيعه فقط.
❌ مثال غير ملتزم بـ OCP:
public class PaymentService
{
public void Pay(string method)
{
if (method == "CreditCard") { }
else if (method == "Paypal") { }
}
}
كل طريقة دفع جديدة تعني تعديل نفس الكلاس.
✔️ مثال ملتزم بـ OCP:
public interface IPaymentMethod
{
void Pay();
}
public class CreditCardPayment : IPaymentMethod
{
public void Pay() { }
}
public class PaymentService
{
private readonly IPaymentMethod _paymentMethod;
public PaymentService(IPaymentMethod paymentMethod)
{
_paymentMethod = paymentMethod;
}
public void ProcessPayment()
{
_paymentMethod.Pay();
}
}
إضافة طريقة دفع جديدة = Class جديد فقط، بدون تعديل الكود الموجود.
إذا أي ميزة جديدة بدها تجبرك تعدل كود قديم، غالبًا تصميمك كاسر مبدأ OCP.


