جارٍ تحميل الدرس...
في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
الفخاخ الشائعة عند تطبيق أنماط التصميم
الأنماط المضادة
إساءة استخدام الأنماط
Golden Hammer، Pattern Obsession، Copy-Paste Programming
أنماط مضادة معمارية
Big Ball of Mud، Spaghetti Code، God Object
أنماط مضادة على مستوى الكود
Magic Numbers، Dead Code، Duplicate Code
Singleton: مدراء الإعدادات، قاعدة البيانات، التسجيل (Log)global state) في أنحاء التطبيقunit testing) صعبا - الحالة تتسرب بين الاختباراتtight coupling) بين مكونات غير مرتبطة# Dependency Injection instead of global singletons
class OrderService:
def __init__(self, config, db, logger):
self.config = config
self.db = db
self.logger = logger
def process_order(self, order):
# use injected dependencies
passif/elif متداخلة بعمق لكل تركيبة100 سطر من منطق الإنشاء محشورة في صنف واحد# Specialized factories instead of one God Factory
class UserFactory:
def create_admin(self, level): pass
def create_regular_user(self): pass
class ProductFactory:
def create_physical_product(self): pass
def create_digital_product(self): passprocessUser وhandlePayment وsendEmail وvalidateData وgenerateReport وعشرات الدوال الأخرىSingle Responsibility Principle)0.15 أو code == 1 منتشرة في المنطقPREMIUM_RATE = 0.15Template Method لمشاركة المسار المشتركoverride) الأجزاء المتغيرة فقط| العرض | الاحتمال / الإجراء |
|---|---|
صنف يتجاوز 500 سطر؟ | احتمال وجود كائن إله (God Object) |
دالة تتجاوز 50 سطرا؟ | استخرج دوالا فرعية |
| كود مكرر؟ | طبق مبدأ DRY |
| أرقام سحرية؟ | استخرج ثوابت مسماة |
| ترابط شديد؟ | طبق مبادئ SOLID |
Singleton والمتغيرات العامةcomposition) وحقن الاعتماديات (dependency injection) على التوريثSingleton والمصانع الإلهية كلاهما ينبع من تجاهل مبدأ المسؤولية الواحدةMahmoud Abas|الأنماط المضادة: ما لا يجب فعله