قبل قليل كنت أقرأ مقال عن عبقرية Drupal و مرونته ( وهو CMS باستخدام php ) ، و بدأت بمحاولة تطوير أول module ، و من الأشياء البديهية التي يمكن أن أفكر بها ، أن أعمل extend لـ Class اسمه Module ، و أرث دالة Function اسمها onCreate ، لأعمل لها Implementation بطريقتي. لكن للأسف وجدت Design Pattern مختلف ممكن نسمّيه " نمط : أكمل الفراغ " ، فكرته كالتالي :
0- لنفرض أنك تريد إنشاء Module بإسم Article .
1- أنشئ دالة اسمها onCreate_X .
2- استبدل X باسم module الخاص بك .
3- Drupal تستدعي بطريقة سحرية الدالة onCreate_Article .
هذا النمط الذي ابتلي به مبرمجي php و ( مبرمجي لغات أخرى ) ، نمط سيء من وجهة نظري المتواضعة. لأنه لا يوفر مقروئية جيدة للكود ، لن تستطيع فهم الكود إلا بعد أن ترى الفراغات و قد اكتملت وهذا لن يحدث إلا في وضع التشغيل وتحت اختبار شامل لكل المسارات . Java تدعم هذا الأسلوب ( بشيء يسمّى Reflection إن لم أكن مخطئ ) ، لكن في الغالب لا يستخدم إلا على نطاق ضيق و تحت ظروف قاهرة . و من يستخدمه لا يخبر به أحداً ، و يستر على نفسه و يستحي على وجهه .
php لديهم call_user_func و Java لديهم Class.forName . لكن الفرق في " كيف نستخدمها و أين ؟ " .
Anti-pattern
اكتشفت أثناء كتابتي لهذا الموضوع أن هناك تصنيف للأنماط السيئة التي يتبعها المبرمجون ، نمط " قص و لصق الكود " ، و نمط " جحيم DLL " ، و أنماط أخرى :
http://en.wikipedia.org/wiki/Anti-pattern#Software_design_anti-patterns
لا أعرف إن كان النمط المذكور في بداية الموضوع من ضمن الأنماط السيئة لكن شخصياً ، أؤمن بذلك .
هل تعرف أنماط سيئة ( برمجية طبعأً ) ؟
