Dart / التكامل: الأهداف والموارد والتحقق والأدلة / الدرس 15
إعلان افتراضات الحزمة والإبلاغ الصادق عن الفحوص
اربط قيود pubspec وحدود المكتبة والتحليل والتنسيق وفحوص السلوك الحتمية دون اختلاق تنفيذ أدوات.
في هذه الصفحة
أهداف الدرس
- اشرح ضرورة دعم نطاق SDK ونسخة اللغة لصياغة الأمثلة المستخدمة.
- ميّز حل الاعتماديات والتحليل الساكن والتنسيق وسلوك الوحدة ودليل التنفيذ على المنصة.
الحزمة والمكتبة حدان مختلفان
تجمع الحزمة المصدر والبيانات الوصفية والاعتماديات تحت pubspec. أما المكتبة فهي وحدة خصوصية Dart وقد تضم ملفا رئيسيا وأجزاءه. تخص الأسماء المسطرة المكتبة، لا الحزمة كلها ولا صنفا واحدا فقط. يتيح استيراد مكتبة من حزمة واجهتها العامة، ولا يمنح الوصول للخاص. نظّم lib ومداخل التنفيذ والاختبارات وفق أعراف المشروع ومسؤولياته. لا تعرض مساعدا غير مستقر لمجرد حاجة ملف آخر؛ فقرّر هل ينتمي للمكتبة نفسها أو لعقد عام مقصود.
أعلن حدا أدنى يستطيع فهم المصدر
يستخدم pubspec التوضيحي حد Dart 3 الأدنى لدعم السجلات والأنماط والمعدلات المعنية. النطاق افتراض تعليمي، لا ادعاء تنفيذ كل مثال على كل SDK داخله أو نجاح حل اعتماديات. تختار الحزمة الحقيقية أدنى SDK تدعمه وتختبر الوعد إلى جانب أدواتها الحالية. وتضيف واجهات المنصة بعدا آخر؛ فقد تستورد حزمة Dart 3 صالحة مكتبة غير متاحة لهدف المتصفح. أعلن افتراض اللغة والمنصة كليهما صراحة.
name: batch_lab
publish_to: none
environment:
sdk: '>=3.0.0 <4.0.0'
يعلن YAML حزمة تعليمية محلية ونطاق SDK. لا يحوي اعتماديات خارجية، ولم يحله pub، ولا يمثل مصفوفة توافق متحققة.
يجيب التحليل والتنسيق عن سؤالين مختلفين
يفحص المحلل الأنواع والتشخيصات المعدة دون إثبات كل سلوك تجاري. يوحد التنسيق العرض ولا يثبت التفويض أو العد الصحيح أو الملكية الآمنة. قد تحسن lint الاتساق بشرط ملاءمة أدوات المشروع وسياساته. لا تسكت تحذيرا بـdynamic أو cast دون فهم الضمان المفقود. تفيد نتيجة تحليل نظيفة فقط إذا عمل الأمر فعليا على المصدر والإعداد المعنيين. لم تشغّل الدورة محللا أو منسقا أو حال اعتماديات أو مشغل اختبار لغياب أدوات Dart.
استخدم حدودا ثابتة لفحص السلوك
يفحص الفاحص المستقل قاعدة حد قبل الموعد وعنده وبعده. يرمي StateError عند الاختلاف بدلا من الاعتماد على تفعيل assert. يظهر ذلك الفحص المقصود لكنه يبقى مصدرا غير منفذ هنا. يقدم إطار معد توكيدات وتجهيزات وتقارير أغنى، ويجب إعلان اعتماده ودعم منصته. أبعد الساعة والعشوائية والشبكة والحالة العامة المعدلة عن فحص سياسة صرفة إلا إذا ضبطها الاختبار عمدا. قد يفوّت اختبار يكرر التعبير نفسه خطأ قاعدة يشترك فيه مع التنفيذ.
bool beforeCutoff(int now, int cutoff) => now < cutoff;
void main() {
final cases = <int, bool>{9: true, 10: false, 11: false};
for (final entry in cases.entries) {
if (beforeCutoff(entry.key, 10) != entry.value) {
throw StateError('cutoff mismatch');
}
}
print('3 declared cases passed');
}
3 declared cases passed
المخرج المتوقع 3 declared cases passed إذا نجحت الترجمة والتنفيذ. ترفض المساواة عمدا. هذا مخرج متوقع، لا اختبار ناجح مسجل.
احفظ نطاق كل ادعاء دليل
يسجل تقرير التحقق المفيد SDK والهدف وحالة الاعتماديات ونسخة المصدر والأمر والنتيجة المرصودة. افصل مراجعة المصدر وتحليل الصياغة والترجمة وتنفيذ الاختبار وتكامل المنصة. لا يثبت اختبار برنامج أصلي استيراد المتصفح أو كل أدنى SDK مدعوم. ولا يثبت lockfile وحل اعتماديات نظيف صحة سلوك التطبيق. نفذ الفحوص المعزولة المناسبة في مشروع المتعلم نفسه. تقدم الدورة مادة أصلية وتحليلا، لا شهادة مختلقة أو نشر حزمة أو نتيجة CI أو تقييما لجاهزية الإنتاج.
الأخطاء الشائعة وإصلاحها
يستخدم المصدر أنماط Dart 3 بحد أدنى لا يدعمها.
- لماذا يحدث؟
- لم يُراجع عقد لغة SDK مع تغيير الصياغة.
- كيف تصلحه؟
- اختر أدنى SDK متوافقا واختبره ووثّق المطلب.
- كيف تتجنب تكراره؟
- راجع قيود pubspec عند تبني خصائص لغة جديدة.
يُعرض المصدر المنسق كأنه صحيح السلوك.
- لماذا يحدث؟
- اختلط توحيد العرض بالتحقق.
- كيف تصلحه؟
- نفذ وأبلغ عن فحوص تستهدف ادعاء السلوك الفعلي.
- كيف تتجنب تكراره؟
- سم نتائج التنسيق والتحليل والاختبار منفصلة.
يوصف مخرج اختبار معلن كنجاح مرصود.
- لماذا يحدث؟
- اختلط التوقع التحليلي بدليل التنفيذ.
- كيف تصلحه؟
- اذكر غياب الأدوات وأبق المثال موسوما غير منفذ.
- كيف تتجنب تكراره؟
- اربط الأوامر والنتائج المحفوظة بكل ادعاء تنفيذ.
اختبر فهمك
1. لماذا يفحص فاحص الموعد المساواة صراحة؟
اعرض الحل المشروح
تميز المساواة < من <= وتحمل كثيرا قرار العمل الحقيقي. قد تنجح قيم أسبق أو لاحقة مع التنفيذين. سجّل قبول المساواة قبل الاختبار ثم استخدم حالة ثابتة تكشف تغيير السياسة العرضي. ولا يفيد نجاح الفاحص كدليل إلا بعد تنفيذه فعليا في البيئة المعلنة.
2. هل يثبت نجاح حل الاعتماديات عمل شيفرة dart:io في المتصفح؟
اعرض الحل المشروح
لا. يخص الحل الاعتماديات والقيود المعلنة، بينما إتاحة مكتبة المنصة والترجمة فحصان منفصلان. أعلن الهدف واستخدم تجريد المنصة المناسب وترجم أو اختبر تنفيذه عند توفر الأدوات. لا تستنتج توافق المنصات من خطوة إدارة حزمة ناجحة واحدة.
أهم ما تعلمته
- تحتاج قيود اللغة ودعم المنصة والسلوك المنفذ أدلة منفصلة.
- يميّز التقرير الدقيق الفحوص المقترحة من المشاهدات المسجلة.