اتفاقيات بنية الوحدات الجاهزة
تحدد هذه الصفحة كيف ينبغي تنظيم الوحدات ذات الحالة داخل 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وeventspanel/يفصل بين حسابات resize ومنطق cursor وحالة runtime والمرئياتtext_label/يستعملmeasure/وrender/لأنه subsystem يجمع بين التخطيط والرندر
قواعد الإتاحة
- المكوّنات العامة التي يكتبها المستخدم تبقى عامة وموثقة
- علامات runtime وأنواع التتبع الداخلي يجب غالبًا أن تبقى
pub(super) - الاختبارات تبقى قرب الوحدة التي تتحقق منها حتى تظل إعادة الهيكلة محلية