تكرار السؤال: …
الإجابة المختصرة
روائح الكود هي مؤشرات سطحية في الشفرة تدل على وجود مشاكل تصميمية ومعمارية أعمق. 'God Object' هي فئة عملاقة تعرف وتفعل كل شيء، و'Feature Envy' تحدث عندما تكون الدالة مهتمة ببيانات فئة أخرى أكثر من بيانات فئتها.
الشرح
علاج God Object هو استخدام Extract Class وتقسيم المسؤوليات وفقاً لـ SRP. أما علاج Feature Envy فهو تطبيق أسلوب Move Method؛ إذا وجدت دالة في OrderService تستدعي عشرات الـ Getters من كائن Customer لحساب نقاط الولاء، فهذا يعني أن هذا المنطق ينتمي في الأصل داخل فئة Customer، فننقل الدالة إلى هناك ونستدعيها ببساطة.
مثال بالكود
// Feature Envy: دالة تتدخل في بيانات كائن آخر وتطلب بياناته الداخلية بدلاً من تفويضه
class OrderPrinter {
printCustomer(c: Customer) {
// استدعاء 5 خصائص من العميل لحساب التنسيق
}
}أخطاء شائعة
- اعتبار أن Code Smell هو خطأ برمجي مباشر (Bug)؛ الروائح لا توقف البرنامج عن العمل ولكنها تجعل صيانته وتطويره مستحيلاً وبطيئاً.