نموذج الأخطاء والتشخيص
تفضّل مساحة العمل التشخيصات القابلة للاسترداد والمحددة النوع بدل الفشل الصامت أو المسارات المعتمة من نوع Result<_, ()>.
القواعد الأساسية
- المشاكل القابلة للاسترداد في runtime يجب أن تفضّل fallback مع تحذير منظّم
- أنواع الخطأ أو المشكلة المعرّفة يجب أن تعرض على الأقل
reasonوactionعندما يكون ذلك مفيدًا - عدم التطابق المخصص للتحقق فقط يجب أن يبقى خلف أوضاع rollout أو shadow validation
- الفحوصات التي تنتهي بـ panic مكانها الاختبارات والأمثلة والثوابت الحقيقية، لا المسارات الساخنة في runtime
شكل التحذير
معظم التحذيرات تتبع هذا الشكل:
- وسم subsystem مثل
[layout/root_resolution]أو[widget/text_label_measure] - سياق entity أو generation عندما يكون متاحًا
reason=...action=...عندما توجد خطوة واضحة يمكن اتخاذها
أمثلة معيارية حالية
- حل الجذور يستعمل
RootResolutionIssueللتمييز بين الكاميرا المفقودة أو الملتبسة أو غير النشطة - قياس النص يستعمل
TextMeasureErrorKindوTextMeasureErrorعندما يفشل إنشاء قياس النص في Bevy - runtime الخاصة بـ select تستعمل
SelectRuntimeErrorعندما تكون شجرة الأبناء المولدة ناقصة - settlement loop وpicking validation يسجلان تحذيرات مرتبطة بالجيل عندما تفشل فحوصات rollout أو عند استهلاك ميزانية التكرار
متى تضيف نوع خطأ جديد
- أضف enum محددًا عندما تتشارك عدة أسباب فشل في موضع استدعاء واحد
- أضف تحذيرًا منظّمًا عندما يستطيع النظام المتابعة لكن المحافظين يحتاجون أثرًا واضحًا
- أبقِ النوع محليًا إذا كان يخدم subsystem واحدة فقط
- رقِّ النوع إلى مستوى أوسع فقط عندما تحتاج وحدة أخرى أن تتفرع على أساسه