بنّاءات مسماة لوضوح القصد
وفّر طرقًا متعددة للإنشاء
بنّاءات مسماة لوضوح القصد درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
لماذا نستخدم Named Constructors
غالبًا ما يحتاج الصنف الواحد إلى عدة طرق للإنشاء. يمنح named constructor كل مسار تسمية واضحة، حتى يعرف المستدعي بالضبط ما سيحصل عليه.
صيغة التسمية
اكتب اسم الصنف، ثم نقطة، ثم التسمية التي تختارها. وتُقرأ الصيغة ClassName.label كأنها جملة قصيرة في موضع الاستدعاء.
class Point {
int x, y;
Point.origin() : x = 0, y = 0;
}استدعاء Named Constructor
استدعِه مثل unnamed constructor، لكن أضف التسمية. وهذا يجعل intent الكائن واضحًا في الشيفرة.
var p = Point.origin();
print(p.x); // 0عدة Named Constructors
أضف العدد الذي تريده، على أن تصف كل واحدة حالة استخدام. فإحداها تنشئ عربة فارغة، والأخرى عربة preset.
class Cart {
int items;
Cart.empty() : items = 0;
Cart.preset() : items = 3;
}Named Constructors مع معاملات
يمكنها تلقي الوسيطات أيضًا، بحيث تجمع بين تسمية واضحة وقيم مخصصة لإنشاء نقطة دخول مرنة ومقروءة بأسلوب factory-style.
class User {
String name;
User.guest(this.name);
}الجمع بين Named وUnnamed
يمكن للصنف الاحتفاظ بـ unnamed constructor العادي وإضافة named constructors إلى جانبه، لتغطية الحالات الشائعة وspecial معًا.
class Color {
int value;
Color(this.value);
Color.black() : value = 0;
}نمذجة مصادر مختلفة
تتألق named constructors عندما تصل البيانات نفسها من أماكن مختلفة، مثل خريطة JSON أو قيم خام، بحيث تحمل كل منها label خاصًا بها.
class User {
String name;
User.fromName(this.name);
}سهولة القراءة في موضع الاستدعاء
قارن بين Temperature.celsius(20) ورقم مجرد. تزيل التسمية الحاجة إلى التخمين، ولذلك تعزز named constructors clarity لدى القرّاء.
var t = Temperature.celsius(20);لا تزال تنشئ النوع نفسه
بغض النظر عن constructor الذي تستدعيه، تحصل على instance من الصنف نفسه. لا تغيّر التسمية النوع، بل تغيّر طريقة initialized فقط.
var a = Point.origin();
print(a is Point); // trueالدمج مع اختصارات this.
تقبل named constructors الاختصار نفسه this.field، مما يحافظ على إيجاز التهيئة حتى مع وجود تسمية وصفية.
class Box {
int w, h;
Box.square(this.w) : h = w;
}اختر تسميات وصفية
اختر تسميات تصف النتيجة، مثل fromMap أو withDefaults. فتحوّل label الجيدة موضع الاستدعاء إلى توثيق.
class Config {
Config.withDefaults();
Config.fromMap(Map m);
}تحقق سريع
تحقق سريع من صيغة named constructor.
مراجعة: وضوح الغرض
تعلمت إضافة named constructors باستخدام صيغة النقطة، ودمجها مع unnamed constructor، وتمرير المعاملات لإنشاء كائنات مقروءة توضّح الغرض منها. 👍
الأسئلة الشائعة
هل درس «بنّاءات مسماة لوضوح القصد» مجاني؟
نعم — نص درس «بنّاءات مسماة لوضوح القصد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «بنّاءات مسماة لوضوح القصد»؟
وفّر طرقًا متعددة للإنشاء تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «بنّاءات مسماة لوضوح القصد»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- البنّاءات الافتراضية والمعلَّمة بالمعاملات
- بنّاءات مسماة لوضوح القصد
- قوائم التهيئة وإعادة التوجيه
- بنّاءات factory وconst