ConstructiCat Logo
CodeBust.
Browse section ▾

إدخال توكيد (Introduce Assertion).

Problem

لكي يعمل جزء معين من الكود بشكل صحيح، يجب أن تكون شروط أو قيم معينة صحيحة.

Solution

استبدل هذه الافتراضات بفحوصات توكيد (assertions) محددة.

##Example

Before
double getExpenseLimit() {
  // يجب أن يكون هناك إما حد للمصاريف أو
  // مشروع رئيسي.
  return (expenseLimit != NULL_EXPENSE) ?
    expenseLimit :
    primaryProject.getMemberExpenseLimit();
}
After
double getExpenseLimit() {
  Assert.isTrue(expenseLimit != NULL_EXPENSE || primaryProject != null);

  return (expenseLimit != NULL_EXPENSE) ?
    expenseLimit:
    primaryProject.getMemberExpenseLimit();
}

##Why Refactor

لنفترض أن جزءاً من الكود يفترض شيئاً ما، على سبيل المثال، الحالة الحالية لكائن ما أو قيمة معامل أو متغير محلي. عادةً ما يظل هذا الافتراض صحيحاً دائماً إلا في حالة حدوث خطأ.

اجعل هذه الافتراضات واضحة عن طريق إضافة التوكيدات المقابلة. كما هو الحال مع تلميح الأنواع (type hinting) في معاملات التوابع، يمكن أن تعمل هذه التوكيدات كتوثيق حي للبرنامج الخاص بك.

كمؤشر لمعرفة أين يحتاج الكود الخاص بك إلى توكيدات، ابحث عن التعليقات التي تصف الشروط التي سيعمل بموجبها تابع معين.

##Benefits

  • إذا لم يكن الافتراض صحيحاً وبالتالي أعطى الكود نتيجة خاطئة، فمن الأفضل إيقاف التنفيذ قبل أن يتسبب ذلك في عواقب وخيمة وتلف للبيانات. وهذا يعني أيضاً أنك أغفلت كتابة اختبار ضروري عند تصميم طرق إجراء اختبار للبرنامج.

##How to Refactor

عندما ترى أنه يُفترض وجود شرط معين، أضف توكيداً (assertion) لهذا الشرط للتأكد.

لا ينبغي أن يؤدي إضافة التوكيد إلى تغيير سلوك البرنامج.

لا تبالغ في استخدام التوكيدات لكل شيء في الكود الخاص بك. تحقق فقط من الشروط الضرورية لعمل الكود بشكل صحيح. إذا كان الكود يعمل بشكل طبيعي حتى عندما يكون توكيد معين خاطئاً، فيمكنك إزالة التوكيد بأمان.