لماذا تتفوق Generics على dynamic
حافظ على أمان النوع مع إبقاء الكود قابلًا لإعادة الاستخدام
لماذا تتفوق Generics على dynamic درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
مشكلة إعادة الاستخدام
غالبًا ما تريد أن يعمل جزء واحد من الكود مع أنواع متعددة. وكتابة نسخة منفصلة لكل نوع أمر ممل، لذلك يوفر لك Dart ميزة generics. 🎯
حل dynamic السريع
يتمثل أحد الحلول السريعة في تعريف كل شيء على أنه dynamic، فهو يقبل أي قيمة. ويبدو هذا مرنًا، لكنه يتخلى بصمت عن كل عمليات التحقق من الأنواع في Dart.
dynamic x = 5;
x = 'now a String';لماذا يسبب dynamic المشكلات
باستخدام dynamic، لا يعود compiler قادرًا على اكتشاف الأخطاء. فقد يمر خطأ إملائي أو استدعاء غير صحيح، ولا يظهر أثره إلا أثناء التشغيل عندما يراه المستخدمون.
dynamic name = 'Ada';
name.notAMethod();تحافظ الأنواع العامة على الأنواع
تتيح الأنواع العامة لتعريف واحد التكيّف مع نوع تختارونه، مع الاحتفاظ بمعلومات دقيقة عن هذا النوع. وهكذا تحصلون على إعادة الاستخدام من دون التضحية بالسلامة.
الأقواس الزاوية
تكتبون النوع المختار داخل الأقواس الزاوية، مثل List of int. ثم يفرض Dart استخدام هذا النوع على كل عنصر تضيفونه.
List<int> scores = [90, 85, 100];اكتشاف الأخطاء مبكرًا
بما أن النوع معروف، يرفض المصرّف القيم غير الصحيحة قبل تشغيل البرنامج. فتظهر الأخطاء في المحرّر، لا في بيئة الإنتاج.
List<int> scores = [90, 85];
scores.add('oops');الإكمال التلقائي في المحرّر
إن معرفة النوع الفعلي تتيح أيضًا الإكمال التلقائي الذكي. يستطيع المحرّر اقتراح الأساليب الموجودة فعلًا في ذلك النوع فقط.
لا مزيد من التحويلات
مع dynamic، غالبًا ما تضطرون إلى تحويل القيم مرة أخرى قبل استخدامها، وهذا يسبب ضوضاء ومخاطر. أما الأنواع العامة فتعيد النوع الصحيح تلقائيًا، فلا تعودون بحاجة إلى التحويلات.
List<String> names = ['Ada'];
String first = names[0];شفرة تشرح نفسها
نوع مثل Map of String to int يوضح للقارئ فورًا نوع البيانات التي يحتويها. توثّق الأنواع العامة الغرض مباشرةً ضمن النوع نفسه.
Map<String, int> ages = {'Ada': 36};السرعة نفسها، وسلامة أكبر
الأنواع العامة ميزة تعتمد في الغالب على وقت الترجمة، لذلك تحصلون على التحقق والوضوح من دون إبطاء البرنامج أثناء التشغيل.
متى يظل dynamic مناسبًا
استخدموا dynamic فقط عندما يكون النوع مجهولًا فعلًا، مثل JSON الخام. وفي جميع الحالات الأخرى، يكون النوع العام هو الخيار الافتراضي الأكثر أمانًا ووضوحًا.
تحقق سريع
لماذا يُفضَّل استخدام الأنواع العامة عادةً على dynamic؟
مراجعة
رأيتم أن الأنواع العامة توفر إعادة الاستخدام من دون التخلي عن سلامة الأنواع، بخلاف dynamic. فهي تكتشف الأخطاء مبكرًا، وتحسّن الإكمال التلقائي، وتوثّق الشفرة. ✅
الأسئلة الشائعة
هل درس «لماذا تتفوق Generics على dynamic» مجاني؟
نعم — نص درس «لماذا تتفوق Generics على dynamic» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «لماذا تتفوق Generics على dynamic»؟
حافظ على أمان النوع مع إبقاء الكود قابلًا لإعادة الاستخدام تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «لماذا تتفوق Generics على dynamic»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا تتفوق Generics على dynamic
- الفئات والطرق العامة
- معاملات الأنواع المقيّدة باستخدام extends
- المجموعات العامة عمليًا