أين وكيف تتفادى استخدام العقد لكل شيء في جودو

من موسوعة حسوب
مراجعة 07:36، 28 أكتوبر 2023 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

العقد سهلة الإنشاء، ولكن لديها محدودياتها، فيمكن أن يحتوي المشروع عشرات آلاف العقد العاملة، ولكن كلما زاد تعقيدها كلما زاد الضغط على أداء المشروع.

توفر جودو كائنات أخف لإنشاء واجهات برمجة تطبيقات التي تستخدم العقد، أبقي ذلك في عين الاعتبار كخيار عند تصميم كيفية بناء خاصيات مشروعك.

الكائن Object

أبسط كائن خفيف يجب أن يستخدم الكائن الأصلي إدارة الذاكرة اليدوي، ومع ذلك ليس من الصعب إنشاء هيكلية بيانات خاصة حتى هيكلية العقد، وهي أخف من صنف العقدة Node.

  • مثال: لاحظ عقدة الشجرة Tree، تدعم مستوى عالي من التعديل لجدول المحتوى مع عدد عشوائي من الصفوف والأعمدة. البيانات المستخدمة لإنشاء التصوير هي حقيقةً كائنات TreeItem.
  • ميزات: تبسيط واجهات برمجة التطبيقات إلى كائنات ذات نطاق أصغر تساعد في تحسين الوصول ووقت التكرار. بدلًا من العمل مع مكتبة العقدة كاملة، يمكن اختصار مجموعة الكائنات يستطيع منها إنشاء وإدارة العقد الفرعية المناسبة.

ملاحظة: يجب الانتباه عند التعامل معهم، إذ يمكن تخزين الكائن في متغير ولكن هذه المراجع يمكن أن تصبح غير صالحة بدون سابق إنذار. مثلًا إذا قرر من أنشئ الكائن حذفه، هذا سيعطي حالة خطأ إذا قرر أحدهم الوصول إليه لاحقًا.

الكائن RefCounted

أعقد قليلًا من الكائن Object. تتبع المراجع references لنفسها وتحذف الذاكرة فقط عندما لا يبقى أي مرجع لنفسه. إن هذه مفيدة في معظم الحالات عندما نحتاج لبيانات في صنف مخصص.

  • مثال: لاحظ كائن FileAccess إنه يعمل مثل كائن Object عادي عدا أنه ليس هناك حاجة لحذفه
  • ميزات: نفس ميزات الكائن Object

المورد Resource

وهو معقد أكثر من الكائن RefCounted لديه الخاصية الداخلية لسلسلة serialize/ إزالة سلسلة deserialize (مثل حفظ وتحميل) خصائص الكائن الخاص بهم من/إلى ملفات جودو المصدرية.

  • مثال: البرامج النصية، PackedScene (من أجل ملفات المشهد) والأنواع الأخرى مثل كل صنف AudioEffects. يمكن حفظ وتحميل كل هذه، أي هي تُشتق من المورد Resource.
  • الميزات: تحدثنا عن ميزات الموارد Resource وعن طرق تخزين البيانات التقليدية، ولكن في سياق استخدام الموارد Resource بدلًا من العقد Node، هذه تتميز بتوافق مع الفاحص Inspector. وهي بنفس خفة الكائنات Obejct و RefCounted يمكنها أيضًا إظهار وتصدير الخاصيات في الفاحص. هذا يسمح لهم لشغل دور مثل العقد الفرعية عن استعمالية الواجهة، ولكن أيضًا تحسن الأداء إذا كان الهدف أن يكون هناك أكبر عدد ممكن من الموارد Resource/العقد Node في المشهد.

مصادر