تبسيط استدعاءات التوابع (Simplifying Method Calls)

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

تجعل التقنيات التي سيشار إليها في هذا القسم استدعاءات التوابع أبسط وأسهل للفهم والاستيعاب. سيؤدي ذلك بدوره إلى تبسيط الواجهات للتفاعل بين الأصناف. هذه التقنيات هي:

  1. إعادة تسمية التوابع (Rename Method)
    • المشكلة: لا يعبِّر اسم التابع عن ما يقوم به.
    • الحل: إعادة تسمية التابع.
  2. إضافة المعاملات (Add Parameter)
    • المشكلة: لا يملك التابع بيانات كافية لتنفيذ بعض الإجراءات.
    • الحل: إنشاء معامل جديد لتمرير البيانات الضرورية.
  3. حذف المعاملات (Remove Parameter)
    • المشكلة: لا يُستخدم معاملٌ ما في متن التابع.
    • الحل: إزالة المعامل غير المستخدم.
  4. فصل الاستعلامات عن المُعدِّلات (Separate Query from Modifier)
    • المشكلة: هل لديك تابعٌ يُعيد قيمةً ما ولكن يغيِّر أيضا شيئًا ما داخل الكائن؟
    • الحل: تقسيم التابع إلى تابعَين منفصلَين. كما يمكن أن نتوقع، يجب على أحدهما أن يعيد القيمة ويُغيِّر الآخر الكائن.
  5. تحويل التوابع إلى معاملات (Parameterize Method)
    • المشكلة: تؤدي توابع متعددة أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها.
    • الحل: تجميع هذه التوابع باستخدام معامل يُمرر القيمة الخاصة الضرورية.
  6. استبدال المعامل بتوابع صريحة (Replace Parameter with Explicit Methods)
    • المشكلة: ينقسم التابع إلى أجزاء، كل منها يتم تشغيله اعتمادًا على قيمة المعامل.
    • الحل: استخراج الأجزاء الفردية من التابع إلى توابعها الخاصة واستدعائها بدلًا من استدعاء التابع الأصلي.
  7. الحفاظ على الكائن كاملًا (Preserve Whole Object)
    • المشكلة: جلب عدة قيم من أحد الكائنات، ثم تمريرها كمعاملات إلى أحد التوابع.
    • الحل: حاول تمرير الكائن بالكامل بدلًا من ذلك.
  8. تبديل المعاملات باستدعاءات التوابع (Replace Parameter with Method Call)
    • المشكلة: استدعاء تابع استعلام (query method) وتمرير نتائجه كمعاملات لتابع آخر، في حين أنه يمكن لهذا التابع استدعاء الاستعلام مباشرة.
    • الحل: بدلًا من تمرير القيمة من خلال المعامل، حاول وضع استدعاء الاستعلام داخل متن التابع.
  9. تعريف كائن المُعامل (Introduce Parameter Object)
    • المشكلة: تحتوي التوابع على نفس المجموعة المتكررة من المعاملات.
    • الحل: استبدال هذه المعاملات بكائنٍ واحد.
  10. ازالة توابع الإعدادات (Remove Setting Method)
    • المشكلة: يكون تعيين قيمة الحقل فقط عند إنشائه، ولا تتغير في أي وقت لاحق.
    • الحل: إزالة التوابع التي تضبط قيمة الحقل.
  11. إخفاء التابع (Hide Method)
    • المشكلة: لا يُستخدم التابع من قِبل الأصناف الأخرى أو يستخدم فقط داخل التسلسل الهرمي للصنف الخاص به.
    • الحل: جعل التابع خاصًا أو محميًا.
  12. استبدال المُنشئ بتابع التصميم (Replace Constructor with Factory Method)
    • المشكلة: لديك مُنشئ (constructor) معقد يقوم بما هو أكثر من مجرد وضع قيم المعامل في حقول الكائن.
    • الحل: إنشاء تابع تصميم واستخدامه لاستبدال استدعاءات المُنشئ.
  13. استبدال شيفرات الأخطاء باستثناءات (Replace Error Code with Exception)
    • المشكلة: يعيد التابع قيمة خاصة تشير إلى خطأ.
    • الحل: إطلاق استثناء بدلًا من ذلك.
  14. استبدال الاستثناءات بالاختبارات (Replace Exception with Test)
    • المشكلة: إطلاق استثناء يمكن لاختبار بسيط أن يحل محله.
    • الحل: يستعاض عن الاستثناء باختبار الحالة.

انظر أيضًا

مصادر