Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

บทนำ

การมีส่วนร่วม

หากคุณสนใจอยากมีส่วนร่วมในการพัฒนาหนังสือเล่มนี้ สามารถอ่านรายละเอียดได้ที่แนวทางการมีส่วนร่วม

ข่าวสาร

ดีไซน์แพตเทิร์น

ในการพัฒนาซอฟต์แวร์ เรามักพบเจอปัญหาที่มีลักษณะคล้ายคลึงกันอยู่เสมอ ไม่ว่าปัญหาเหล่านั้นจะเกิดขึ้นในสภาพแวดล้อมใดก็ตาม แม้ว่ารายละเอียดของการนำไปใช้งานจริง (implementation details) จะมีความสำคัญต่อการแก้โจทย์เฉพาะหน้าตรงนั้น แต่เราก็สามารถมองข้ามรายละเอียดเฉพาะเจาะจงเหล่านั้น เพื่อสกัดเอาแนวทางปฏิบัติร่วมกันที่สามารถนำไปประยุกต์ใช้ได้ทั่วไปในวงกว้าง

ดีไซน์แพตเทิร์น (Design Pattern) คือชุดของแบบแผนการแก้ปัญหาที่ผ่านการทดสอบมาแล้ว และสามารถนำกลับมาใช้ซ้ำได้สำหรับโจทย์ที่เกิดขึ้นบ่อยครั้งในงานวิศวกรรมซอฟต์แวร์ ซึ่งช่วยให้ซอฟต์แวร์ของเรามีความเป็นโมดูล ดูแลรักษาง่าย และขยายขีดความสามารถต่อได้สะดวกยิ่งขึ้น ยิ่งไปกว่านั้น แพตเทิร์นเหล่านี้ยังทำหน้าที่เป็น “ภาษากลาง” ให้แก่นักพัฒนา ทำให้กลายเป็นเครื่องมือชั้นยอดสำหรับการสื่อสารอย่างมีประสิทธิภาพเมื่อต้องร่วมมือกันแก้ปัญหาเป็นทีม

พึงระลึกไว้เสมอว่า: ทุกแพตเทิร์นต่างมีข้อแลกเปลี่ยน (trade-off) ในตัวเอง สิ่งสำคัญที่สุดจึงอยู่ที่การทำความเข้าใจว่า “ทำไม” คุณจึงเลือกใช้แพตเทิร์นหนึ่ง มากกว่าการมุ่งเน้นเพียงแค่ว่า “จะเขียนโค้ดอย่างไร”1

ดีไซน์แพตเทิร์นใน Rust

ภาษา Rust ไม่ใช่ภาษาโปรแกรมเชิงวัตถุ (Object-Oriented Programming) และด้วยการผสมผสานจุดเด่นเฉพาะตัวต่างๆ เข้าด้วยกัน เช่น แนวคิดเชิงฟังก์ชัน, ระบบชนิดข้อมูลที่เข้มงวด (strong type system) ตลอดจนระบบ borrow checker สิ่งเหล่านี้ทำให้ Rust มีเอกลักษณ์ที่ไม่เหมือนใคร ด้วยเหตุนี้ ดีไซน์แพตเทิร์นใน Rust จึงมีความแตกต่างไปจากภาษาเชิงวัตถุแบบดั้งเดิมอื่นๆ นั่นคือเหตุผลที่เราตั้งใจเขียนหนังสือเล่มนี้ขึ้นมา เราหวังว่าคุณจะเพลิดเพลินกับการอ่าน! โดยเนื้อหาในเล่มจะแบ่งออกเป็น 3 หมวดหลัก:

  • สำนวนการเขียนโค้ด (Idioms): แนวทางปฏิบัติที่ควรยึดถือขณะเขียนโค้ด เปรียบเสมือนบรรทัดฐานทางสังคมของชุมชนชาว Rust ซึ่งคุณควรหลีกเลี่ยงหรือฝ่าฝืนก็ต่อเมื่อมีเหตุผลที่หนักแน่นเพียงพอเท่านั้น
  • ดีไซน์แพตเทิร์น (Design Patterns): วิธีการและแบบแผนในการแก้ปัญหาทั่วไปที่พบบ่อยขณะเขียนโค้ด
  • แอนติแพตเทิร์น (Anti-patterns): วิธีการแก้ปัญหาที่มักพบเห็นบ่อยเช่นกัน แต่ในขณะที่ดีไซน์แพตเทิร์นนำมาซึ่งประโยชน์ แอนติแพตเทิร์นกลับสร้างปัญหาและผลเสียตามมามากกว่า

  1. https://www.infoq.com/podcasts/software-architecture-hard-parts/ (Archive) ↩