Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

نموذج الأخطاء والتشخيص

تفضّل مساحة العمل التشخيصات القابلة للاسترداد والمحددة النوع بدل الفشل الصامت أو المسارات المعتمة من نوع 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 واحدة فقط
  • رقِّ النوع إلى مستوى أوسع فقط عندما تحتاج وحدة أخرى أن تتفرع على أساسه