إدخال توكيد (Introduce Assertion).
لكي يعمل جزء معين من الكود بشكل صحيح، يجب أن تكون شروط أو قيم معينة صحيحة.
استبدل هذه الافتراضات بفحوصات توكيد (assertions) محددة.
##Example
double getExpenseLimit() {
// يجب أن يكون هناك إما حد للمصاريف أو
// مشروع رئيسي.
return (expenseLimit != NULL_EXPENSE) ?
expenseLimit :
primaryProject.getMemberExpenseLimit();
}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) لهذا الشرط للتأكد.
لا ينبغي أن يؤدي إضافة التوكيد إلى تغيير سلوك البرنامج.
لا تبالغ في استخدام التوكيدات لكل شيء في الكود الخاص بك. تحقق فقط من الشروط الضرورية لعمل الكود بشكل صحيح. إذا كان الكود يعمل بشكل طبيعي حتى عندما يكون توكيد معين خاطئاً، فيمكنك إزالة التوكيد بأمان.