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

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

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

หากนำมาใช้อย่างพร่ำเพรื่อ ดีไซน์แพตเทิร์นก็อาจเพิ่มความซับซ้อนโดยไม่จำเป็นให้กับโปรแกรมได้ อย่างไรก็ตาม ดีไซน์แพตเทิร์นยังคงเป็นเครื่องมือชั้นเลิศในการแบ่งปันและถ่ายทอดองค์ความรู้ในระดับกลางไปจนถึงระดับสูงเกี่ยวกับภาษาโปรแกรมนั้นๆ

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

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

YAGNI

YAGNI เป็นตัวย่อมาจากวลี You Aren't Going to Need It (คุณจะยังไม่จำเป็นต้องใช้มันในตอนนี้) ซึ่งเป็นหนึ่งในหลักการออกแบบซอฟต์แวร์ที่สำคัญยิ่งที่ควรยึดถือขณะเขียนโค้ด

โค้ดที่ดีที่สุดที่ผมเคยเขียน คือโค้ดที่ผมไม่ต้องเขียนมันขึ้นมาเลย

หากเรานำหลักการ YAGNI มาปรับใช้กับดีไซน์แพตเทิร์น จะเห็นได้ว่าคุณลักษณะต่างๆ ของ Rust ช่วยให้เราสามารถตัดแพตเทิร์นแบบดั้งเดิมทิ้งไปได้หลายแบบ ตัวอย่างเช่น เราแทบไม่มีความจำเป็นต้องนำ Strategy pattern มาใช้ใน Rust เพราะเราสามารถใช้ความสามารถของ traits ทดแทนได้โดยตรง