نموذج مضاد
المحتويات
بدايةً، في هندسة البرمجيات، النموذج المضاد (أو antipattern) هو أحد نماذج التصميم من الشائع استخدامه ولكنه غير فعال و/ أو يؤدي إلى نتائج عكسية في الممارسة العملية. وفيما يلي تفاصيل أوسع عن ذلك.
كذلك، ومن خلال وصف الأخطاء المتكررة رسميا، يمكن للمرء أن يتعرف على القوى التي تؤدي إلى تكرارها ومعرفة كيف قام الآخرون بإعادة هيكلة تلك النماذج المكسورة.
نماذج مضادات معروفة
كذلك، وهو مستوحى من كتاب عصابة الأربعة ديزاين باترنز، التي طورت مفهوم نماذج التصميم في مجال البرمجيات. وشاع المصطلح على نطاق واسع بعد ثلاث سنوات من خلال كتاب انتي باترن، الذي مدد استخدام المصطلح إلى ما وراء مجال تصميم البرمجيات وإلى التفاعل الاجتماعي العام. وبحسب المؤلفين الكتاب، يجب أن يكون هناك ما لا يقل عن اثنين من العناصر الرئيسية الحالية لتمييز الفعلي بين النموذج المضاد وبين عادة سيئة بسيطة، أو ممارسة سيئة، أو فكرة سيئة:
ومن جهة أخرى، كثيرا ما يستعمل بشكل سئ مع ألفاظ محدثة ذات تناقض ظاهري، وكثير من الأفكار المضادة للنموذج تصل إلى ما هو أكثر قليلا من الأخطاء، أو التشدق، أو المشاكل القابلة للحل، أو الممارسات السيئة التي يجب تجنبها إذا كان ذلك ممكنا. وأحيانا تُعرف باسم أغوية أو النماذج المظلمة، وهذا الاستخدام غير الرسمي لهذا المصطلح يشير إلى فئات اعادت اختراع حلول سيئة للمشاكل. وبالتالي، فالكثير من المرشحات كنماذج مضادات قيد المناقشة لا تعتبر رسميا مضادة للنماذج.
في هذا الإطار، وحل إعادة هيكلة الكود تم توثيقه بوضوح، وثبت في الممارسة الفعلية وتكرارها.
وقد وضع هذا المصطلح في عام 1995 من قبل أندرو كونيغ،
ومن جهة أخرى، نموذج متكرر لحركة، أو لعملية أو لهيكل يبدو في البداية أنه مفيد، ولكن في نهاية المطاف تنتج عواقب سيئة أكثر من النتائج مفيدة، و
نماذج مضادات لإدارة المشاريع
ومن جهة أخرى، الدخان والمرايا: لإظهار صعوبة تنفيذ الوظائف أو كيفية عدم تنفيذها
وفي السياق ذاته، سخام البرمجيات: السماح لإصدارات متعاقبة لنظام ما لطلب المزيد من الموارد
في هذا الإطار، زحف الموت: يعرف الجميع أن المشروع سيكون بمثابة كارثة—ما عدا الرئيس التنفيذي—لذا يتم إخفاء الحقيقة لمنع الإلغاء الفوري للمشروع -- (على الرغم من أن الرئيس التنفيذي غالبا ما يكون على دراية ولكنه يتجاهل لتعظيم الربح). ومع ذلك، تظل الحقيقة مخفية، ويتم الاحتفاظ بشكل مصطنع بالمشروع حتى يأتي اليوم الأخيرا ("الانفجار الكبير"). تعريف بديل: يتم وضع الموظفين تحت ضغوط للعمل إلى وقت متأخر من الليل وعطلات نهاية الأسبوع على مشروع مع مهلة غير معقولة.
من جهة ثانية، نموذج الشلال: طريقة قديمة لتطوير البرمجيات التي تتعامل بصورة كافية مع التغيير الغير متوقع
وفي السياق ذاته، تفكير القطيع: خلال التفكير الجماعي، يتجنب أعضاء الفريق تعزيز وجهات النظر خارج منطقة إجماع الأراء المريحة
واجهة ثابتة: استخدام الواجهات لتعريف الثوابت
- الأشباح: كائنات غرضها الوحيد هو تمرير المعلومات إلى كائن آخر
- اقتران تسلسلي: فئة تتطلب أن تُسمى أساليبها في ترتيب معين
- مشكلة يو يو: هيكل (مثلًا، ميراثي) من الصعب فهمه بسبب التجزئة المفرطة
علاوةً على ذلك، كائن القصف: الفشل في تغليف الكائنات بشكل صحيح وبذلك السماح بدخول غير مقيد إلى دواخلهم
من جانب آخر، Object cesspool: إعادة استخدام الكائنات التي لا تتوافق حالتها مع عقد (ربما ضمني) عدم إعادة استخدامها
من جهة ثانية، كائن الاله: تركيز وظائف كثيرة جدا في جزء واحد من التصميم (فئة)
نماذج مضادات تنظيمية
علاوةً على ذلك، فطر الإدارة: إبقاء الموظفين في جهل وتضليل (يبقى في الظلام ويتم تسميده)، يترك ليغلي، وأخيرا يعبأ
وفي هذا السياق، المدخنة أو الصوامع: هيكل يدعم أغلب تدفق البيانات الأعلى – الأسفل ولكن يمنع الاتصال التنظيمي المتبادل
ومن جهة أخرى، تصميم من قبل لجنة: نتيجة وجود الكثير من المساهمين في التصميم، ولكن بلا رؤية موحدة
- تصعيد التزامي: فشل في إلغاء قرار عندما يثبت خطأ
- Management by perkele: أسلوبه إداري استبدادي بدون التسامح مع المعارضة
- إدارة المصفوفة: هيكل تنظيمي غير مركز ينتج في تقسيم الولاءات وعدم وجود اتجاه
- خطر أخلاقي: عزل صانع القرار عن عواقب قراره
كذلك، مشروع مدر للأموال: منتج ذي ربح غالبا ما يؤدي إلى الشعور بالرضا عن منتجات جديدة
قبضة الباعة: اعتماد نظام بشكل مفرط على مكون مورد من الخارج
شلل التحليل: تكريس جهد لا يتناسب مع مرحلة التحليل للمشروع
نماذج مضادات تصميم كائنية التوجه
من جهة ثانية، Anemic Domain Model: استخدام نموذج المجال دون أيمنطق تجاري. لا يمكن لكائنات نموذج المجال أن تضمن صحتها في أي لحظة، لأن منطق صحتها وتحولها في مكان ما بالخارج (على الأرجح في أماكن متعددة).
ومن جهة أخرى، الاعتماد الدائري: تقديم تبعيات متبادلة مباشرة أو غير مباشرة لا لزوم لها بين كائنات أو وحدات البرمجيات
- BaseBean: وراثة وظائف من فئة الأداة بدلا من تفويض إليها
- Call super: طلب فئات فرعية للاتصال بأسلوب فائق التجاوز
- مشكلة قطع الدائرة: تفريع أنواع متغيرة، على أساس القيمة الفرعية
نماذج مضادات تصميم البرمجيات
من جهة ثانية، وجهة نظر غامضة: عرض نموذج (عادة تصميم وتحليل كائنية التوجه (OOAD)) دون تحديد وجهة نظرها
إضافةً إلى ذلك، حل مشكلة الإدخال: الفشل في تحديد وتنفيذ معالجة إدخال غير صالحة
مدخنة النظام: تجممع لا يُستحمل من المكونات السيئة
ومن ناحية أخرى، تأثير المنصة الداخلية: نظام يمكن تخصيصه ليصبح نسخة فقيرة طبق الأصل من البرنامج الأساسي للتطوير
كذلك، الزر السحري: تنفيذ الترميز منطقي بشكل مباشر داخل واجهة الكود، من دون استخدام التجريد
ومن ناحية أخرى، Gold Plating: مواصلة العمل على مهمة أو مشروع جيد لوقت أطول لإضافة قيمة إضافية
كذلك، انعكاس التجريد: عدم تعريض الوظائف التنفيذية المطلوبة من قبل المستعملين، بحيث يعاد تنفيذها باستخدام وظائف أعلى مستوى
كرة كبيرة من الطين: نظام بدون هيكلة معروفة
وفي هذا السياق، سخام واجهة: جعل واجهة قويا لدرجة انه من الصعب للغاية تنفيذها
وفي هذا السياق، Database-as-IPC: استخدام قاعدة البيانات كقائمة رسائل لـ الاتصال البيني الروتيني حيث تكون آلية خفيفة الوزن أكثر مناسبة
حالة سباق: الفشل في رؤية نتيجة أوامر مختلفة للاحداث
رائحة الكود – symptom of unsound programming
- – approaches, styles, maxims and philosophies for software development
- المراجع
- وصلات خارجية
نماذج مضادات إدارة التهيئة
من جهة ثانية، تعارض الامتدادات : مشاكل مع امتدادات مختلفة لإصدارات ما قبل ماك أو إس عشرة من ماك أو أس أثناء محاولة إلصاق نفس الأجزاء من نظام التشغيل
انظر كذلك
وعلى صعيد آخر، DLL hell : معالجة غير كافية لملفات مكتبة الربط الديناميكي وخاصة مع مايكروسوفت ويندوز
ومن جهة أخرى، محمل صف جافا : الاستخدام الزائد للعديد من ملفات جار (توضيح) في العادة تسبب مشاكل في الموقع والإصدار نتيج لسوء فهم نموذج محمل صف جافا
Dependency hell : مشاكل مع إصدارات بعض البرمجيات المطلوبة
نماذج مضادات تحليلية
ومن جهة أخرى، لامبالاة المارة: عند اتخاذ قرار شرط أو تصميم خطأ، ولكن الناس الذين لاحظوا هذا الخطأ لا يفعلون شيئا لأنه يؤثر على عدد أكبر من الناس
نماذج مضادات برمجية
من جهة ثانية، الرماز المتشابك: برامج بالكاد مفهومة الهيكل، لا سيما بسبب سوء استخدام بناء الكود
من جانب آخر، تدفق الحمم: الإبقاء على كود غير مرغوب فيه (زائد أو منخفض الجودة) لان إزالته مكلفة للغاية أو له عواقب لا يمكن التنبؤ بها
وفي هذا السياق، كود لين: تخزين منطق الأعمال في ملفات التهيئة بدلا من الكود المصدري
وفي السياق ذاته، تسلسل حلقة التبديل: ترميز مجموعة من الخطوات المتتابعة باستخدام التبديل في جملة الحلقة
من جانب آخر، الدوران المشغول: استهلاك وحدة المعالجة المركزية في انتظار حدوث شيء ما، وعادة من تكرار الفحص بدلا من الرسائل
- تعقيد عرضي: تقديم تعقيدات لا لزوم لها في الحل
- العمل على مسافة: تفاعل غير متوقع على نطاق واسع يفصل بين أجزاء من النظام
- الإيمان الأعمى : عدم وجود فحص (أ) لصحة إصلاح خلل أو (ب) لنتيجة روتين
- مرساة السفينة: الإبقاء على جزء من النظام الذي لم يعد له أي استخدام
الأرقام السحرية: تتضمن أرقام غير مفهومة في الخوارزميات
إضافةً إلى ذلك، الخيوط السحرية: تتضمن خيوط حرفية في الأكواد، لإجراء المقارنات، كأنواع الأحداث الخ
الكود الصلب: تضمين افتراضات حول البيئة وجود نظام في تنفيذه
- فشل التخزين المؤقت: نسيان إعادة التعليم على علم الخطأ عند تصحيح الخطأ
- طائفة البضائع البرمجة: استخدام أنماط وأساليب دون فهم السبب
- الترميز من خلال الاستثناء: إضافة رمز جديد للتعامل مع كل حالة خاصة تظهر
من جهة ثانية، اختباء الخطأ: اصطياد رسالة الخطأ قبل ابرازها للمستعمل وإما عرض لا شيء أو عرض رسالة لا معنى لها
وفي هذا الصدد، تكرار نفسك: تكرر كتابة كود يتضمن نماذج متكررة، وتجنب مرة واحدة فقط (مبدأ التجريد)
نماذج مضادات منهجية
إعادة اختراع العجلة : الفشل في انتهاج حل موجود ومناسب
في هذا الإطار، متلازمة لم يخترع هنا : التوجه لإعادة اختراع العجلة (الفشل في انتهاج حل موجود ومناسب)
ومن ناحية أخرى، إعادة اختراع العجلة المربعة : الفشل في انتهاج حل موجود ومناسب وانتهاج حل مُعدل آخر ذو مساوئ وعيوب أكثر من الحل الأول
عامل احتمال الحدوث: يفترض أنه من المتوقع حدوث خطأ معلوم
قانون الأداة : يفترض أن حلاً مفضلاً قابل للتطبيق عالمياً
ومن جهة أخرى، الرصاصة الفضية: افتراض أن أسلوب برمجي مفضل قد يقوم بحل عملية أو مشكلة أكبر
وعلى صعيد آخر، التحسين المبكر : البرمجة المبكرة من أجل الوصول للكفائة والتصميم الجيد والقابلية للصيانة وأحياناً من أجل كفاءة واقعية أكثر
ومن ناحية أخرى، البرمجة بالتبديل (أو البرمجة بالمصادفة): محاولة الوصول لحل عن طريق تعديل الكود البرمجي لرؤية ما إذا كان يعمل
وفي هذا الصدد، تطوير الفاحص المُسير: مشروعات برمجية محدد بها متطلبات جديدة لتقارير الأخطاء البرمجية
علاوةً على ذلك، برمجة القص والنسخ : نسخ وتعديل الكود البرمجي الموجود عوضاً عن إيجاد حلول جديدة شاملة.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟