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

اتفاقيات بنية الوحدات الجاهزة

تحدد هذه الصفحة كيف ينبغي تنظيم الوحدات ذات الحالة داخل crates/univis_ui_widgets/src/widget/.

السطح العام

  • كل وحدة تعرض مكوّنًا عامًا يكتبه المستخدم مثل USelect أو UTextField أو UPanel
  • كل وحدة تعرض إضافة باسم Univis<Name>Plugin
  • الرسائل الخارجة توضع في events عندما تكون الوحدة تبعثها

التقسيم الداخلي

استعمل هذه المسؤوليات عندما تكبر الوحدة على ملف واحد بسيط:

  • model: بيانات المستخدم، ومساعدات التطبيع، وأنواع الإعداد العامة
  • runtime: علامات شجرة الأبناء المولدة، والموارد الداخلية، ومساعدات البناء
  • interaction: معالجة الإدخال وانتقالات الحالة
  • visuals: مزامنة الألوان والنصوص والهندسة وباقي المخرجات المرئية
  • events: الرسائل الخارجة بعد استقرار الحالة

قواعد الجدولة

  • Build: إنشاء شجرة runtime أو إصلاحها
  • Logic: الاستجابة للإدخال وتحديث الحالة
  • Visual: مزامنة الشجرة المرئية من أحدث حالة
  • Events: إرسال الرسائل للخارج بعد استقرار المنطق والمرئيات

أنماط شائعة

  • select/ يستعمل model وruntime وinteraction وvisuals وevents
  • panel/ يفصل بين حسابات resize ومنطق cursor وحالة runtime والمرئيات
  • text_label/ يستعمل measure/ وrender/ لأنه subsystem يجمع بين التخطيط والرندر

قواعد الإتاحة

  • المكوّنات العامة التي يكتبها المستخدم تبقى عامة وموثقة
  • علامات runtime وأنواع التتبع الداخلي يجب غالبًا أن تبقى pub(super)
  • الاختبارات تبقى قرب الوحدة التي تتحقق منها حتى تظل إعادة الهيكلة محلية