تنظيم مشروع متعدد الملفات
نظّم الوحدات بوضوح
تنظيم مشروع متعدد الملفات درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
ملف واحد يزدحم
مع نمو البرنامج، يتحول ملف main واحد إلى جدار من الشيفرة. ويساعد تقسيمه إلى files مركّزة على إبقاء كل جزء سهل القراءة. 🗂️
main.zig هو نقطة الدخول
يبدأ الملف التنفيذي في main.zig، حيث توجد الدالة main. وهو يستورد الملفات الأخرى ويربط أجزاء البرنامج معًا.
const greet = @import("greet.zig");التجميع حسب المسؤولية
ضع الشيفرة المرتبطة في ملف واحد: التحليل في parser.zig، والإخراج في render.zig. يتولى كل ملف responsibility واضحة وواجهة صغيرة.
الملف وحدة
بما أن الملف struct، فإن استيراده يمنحك module منظّمة. وتشكّل دواله وأنواعه التي تحمل pub واجهة برمجة التطبيقات العامة لتلك الوحدة.
const parser = @import("parser.zig");
const ast = parser.parse(input);استخدم المجلدات للتوسع
جمّع الملفات في folders مثل src/net أو src/cli. واستوردها باستخدام مسار نسبي يتضمن اسم المجلد.
const http = @import("net/http.zig");إعادة التصدير من موضع واحد
يمكن لملف root صغير إعادة إتاحة أجزاء من عدة ملفات، ومنح المستدعين استيرادًا واحدًا يجمع الوحدة كاملة.
pub const http = @import("http.zig");
pub const dns = @import("dns.zig");أبقِ الواجهة صغيرة
اجعل ما يحتاج إليه المستدعون فعلًا فقط يحمل pub. ويبقى كل ما عداه خاصًا، مما يتيح لك إعادة هيكلة التفاصيل الداخلية دون كسر الملفات الأخرى.
الأنواع تنتقل أيضًا
تصدّر الملفات أنواعًا، لا دوالًا فقط. ويصبح struct أو enum يحمل pub في shapes.zig هو shapes.Circle في أي موضع يُستورد فيه.
const shapes = @import("shapes.zig");
var c: shapes.Circle = undefined;انتبه إلى الدورات
يمكن لملفين يستورد كل منهما الآخر تكوين cycle. يتعامل Zig مع حالات كثيرة منها، لكن التصميم الأنظف يضع الأنواع المشتركة في ملف ثالث.
الاختبارات بجانب الشيفرة
يمكن لكل ملف أن يحتوي على كتل test الخاصة به بجانب الشيفرة التي تختبرها. ويحافظ تقسيم الملفات على قرب الاختبارات من العناصر التي تتحقق منها.
test "add works" {
try std.testing.expect(add(2, 2) == 4);
}سمِّ الملفات بطريقة متوقعة
استخدم names واضحة للملفات، بأحرف صغيرة، تلمّح إلى محتوياتها، مثل token.zig أو config.zig. تجعل الأسماء الجيدة قراءة الاستيرادات شبيهة بالنثر تقريبًا.
const config = @import("config.zig");اختبار سريع
تذكّر كيف يتيح ملف لملف آخر الوصول إلى ميزاته.
مراجعة
رأيت كيفية تقسيم الشيفرة إلى files ومجلدات مركّزة، وإتاحة واجهة API صغيرة تحمل pub، بل وإعادة التصدير عبر وحدة جذرية واحدة. 🎯
الأسئلة الشائعة
هل درس «تنظيم مشروع متعدد الملفات» مجاني؟
نعم — نص درس «تنظيم مشروع متعدد الملفات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «تنظيم مشروع متعدد الملفات»؟
نظّم الوحدات بوضوح تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تنظيم مشروع متعدد الملفات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استيراد الملفات باستخدام @import
- تنظيم مشروع متعدد الملفات
- build.zig.zon ومدير الحزم
- إضافة وحدة خارجية