การจัดโครงสร้างโครงการหลายไฟล์
จัดระเบียบโมดูลให้เป็นระเบียบ
การจัดโครงสร้างโครงการหลายไฟล์ เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
ไฟล์เดียวเริ่มแออัด
เมื่อโปรแกรมเติบโตขึ้น ไฟล์หลักไฟล์เดียวจะกลายเป็นกำแพงโค้ด การแยกออกเป็นไฟล์ที่มีหน้าที่ชัดเจนช่วยให้แต่ละส่วนอ่านง่าย 🗂️
main.zig คือจุดเริ่มต้น
ไฟล์ปฏิบัติการของคุณเริ่มทำงานใน main.zig ซึ่งมีฟังก์ชัน main อยู่ ไฟล์นี้จะนำเข้าไฟล์อื่นและเชื่อมส่วนต่าง ๆ ของโปรแกรมเข้าด้วยกัน
const greet = @import("greet.zig");จัดกลุ่มตามหน้าที่
ใส่โค้ดที่เกี่ยวข้องกันไว้ในไฟล์เดียว เช่น การแยกวิเคราะห์ใน parser.zig และผลลัพธ์ใน render.zig แต่ละไฟล์มีหน้าที่รับผิดชอบที่ชัดเจนและมีส่วนติดต่อขนาดเล็ก
ไฟล์คือโมดูล
เนื่องจากไฟล์คือโครงสร้างข้อมูล การนำเข้าไฟล์จึงทำให้คุณได้โมดูลที่เป็นระเบียบ ฟังก์ชันและชนิดข้อมูล pub ของไฟล์จะประกอบกันเป็น API สาธารณะของโมดูลนั้น
const parser = @import("parser.zig");
const ast = parser.parse(input);ใช้โฟลเดอร์เมื่อโครงการใหญ่ขึ้น
จัดกลุ่มไฟล์ไว้ในโฟลเดอร์ เช่น src/net หรือ src/cli แล้วนำเข้าโดยใช้เส้นทางสัมพัทธ์ที่มีชื่อโฟลเดอร์รวมอยู่ด้วย
const http = @import("net/http.zig");ส่งออกซ้ำจากจุดเดียว
ไฟล์ รากขนาดเล็กสามารถเปิดเผยส่วนต่าง ๆ จากหลายไฟล์อีกครั้ง ทำให้ผู้เรียกใช้มีการนำเข้าเพียงครั้งเดียวเพื่อรวบรวมทั้งโมดูล
pub const http = @import("http.zig");
pub const dns = @import("dns.zig");รักษา API ให้มีขนาดเล็ก
กำหนดเป็น pub เฉพาะสิ่งที่ผู้เรียกใช้จำเป็นต้องใช้จริงเท่านั้น ส่วนอื่นจะยังเป็นส่วนตัว คุณจึงปรับโครงสร้างภายในได้โดยไม่ทำให้ไฟล์อื่นเสียหาย
ชนิดข้อมูลก็ส่งออกได้
ไฟล์ส่งออกชนิดข้อมูลได้ ไม่ใช่แค่ฟังก์ชัน โครงสร้างข้อมูลหรือชนิดแจกแจงที่เป็น pub ใน shapes.zig จะกลายเป็น shapes.Circle เมื่อใดก็ตามที่มีการนำเข้า
const shapes = @import("shapes.zig");
var c: shapes.Circle = undefined;ระวังการวนเป็นวงจร
ไฟล์สองไฟล์ที่นำเข้าซึ่งกันและกันอาจก่อให้เกิดวงจรได้ Zig รองรับหลายกรณี แต่การจัดโครงสร้างที่สะอาดกว่าคือย้ายชนิดข้อมูลที่ใช้ร่วมกันไปไว้ในไฟล์ที่สาม
การทดสอบอยู่ข้างโค้ด
แต่ละไฟล์สามารถมีบล็อกการทดสอบของตนเองอยู่ข้างโค้ดที่ตรวจสอบได้ การแยกไฟล์ช่วยให้การทดสอบที่เกี่ยวข้องอยู่ใกล้กับสิ่งที่ตรวจสอบ
test "add works" {
try std.testing.expect(add(2, 2) == 4);
}ตั้งชื่อไฟล์อย่างเป็นแบบแผน
ใช้ชื่อไฟล์ตัวพิมพ์เล็กที่ชัดเจนและสื่อถึงเนื้อหา เช่น token.zig หรือ config.zig ชื่อที่ดีทำให้การนำเข้าอ่านได้แทบเหมือนประโยค
const config = @import("config.zig");ตรวจสอบอย่างรวดเร็ว
ทบทวนว่าไฟล์หนึ่งเปิดเผยความสามารถของตนให้ไฟล์อื่นได้อย่างไร
สรุปทบทวน
คุณได้เห็นวิธีแยกโค้ดออกเป็นไฟล์และโฟลเดอร์ที่มีหน้าที่ชัดเจน เปิดเผย API แบบ pub ขนาดเล็ก และส่งออกซ้ำผ่านโมดูลรากเพียงแห่งเดียว 🎯
คำถามที่พบบ่อย
บทเรียน “การจัดโครงสร้างโครงการหลายไฟล์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจัดโครงสร้างโครงการหลายไฟล์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจัดโครงสร้างโครงการหลายไฟล์”
จัดระเบียบโมดูลให้เป็นระเบียบ คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การจัดโครงสร้างโครงการหลายไฟล์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นำเข้าไฟล์ด้วย @import
- การจัดโครงสร้างโครงการหลายไฟล์
- build.zig.zon และตัวจัดการแพ็กเกจ
- การเพิ่มโมดูลจากผู้พัฒนาภายนอก