الفرق بين المراجعتين ل"Refactoring/techniques/simplifying method calls"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إنشاء الصفحة.)
 
(لا فرق)

المراجعة الحالية بتاريخ 18:16، 27 فبراير 2019

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

  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)
    • المشكلة: إطلاق استثناء يمكن لاختبار بسيط أن يحل محله.
    • الحل: يستعاض عن الاستثناء باختبار الحالة.

انظر أيضًا

مصادر