Ebook Studio

Topic 5

Topic 5

โค้ด Ruby ใช้ร่วมจากโฟลเดอร์ en/ ของต้นฉบับ เพื่อให้สองภาษาผูกกับชุดทดสอบเดียวกัน

ภาพรวม

ทำไมหัวข้อนี้จึงสำคัญ

แอปพลิเคชันจริงต้องมีพฤติกรรมที่ชัดเจนเวลาข้อมูลหาย หรือเวลาสถานะของระบบไม่ถูกต้อง Ruby ให้เครื่องมือที่กระชับ เช่น guard clauses และ safe navigation ก็จริง แต่บทเรียน ที่ลึกกว่านั้นคือการเลือก failure mode ที่เหมาะกับแต่ละสถานการณ์

สิ่งที่ผมอยากให้คุณทำได้เมื่อจบหัวข้อนี้

เมื่อจบหัวข้อนี้ คุณควรจะ:

จุดที่ผมใช้ดูความเข้าใจ

ผมอยากให้คุณอธิบายความต่างระหว่าง "หาไม่เจอ" กับ "ตั้งค่าผิด" ได้ชัด ไม่ใช่แค่ทำให้ test ผ่าน

โน้ตสั้น

nil ใน Ruby ใช้ง่ายก็จริง แต่ในเชิงการสอน คำถามที่สำคัญกว่า "จะไม่ให้โปรแกรมพังได้ อย่างไร" คือ "การไม่มีค่านี้ หมายความว่าอะไรใน domain นี้"

ข้อมูลบางอย่างอาจจะไม่มีได้:

ข้อมูลบางอย่างขาดไม่ได้:

จุดที่ Ruby ทำได้ดีในหัวข้อนี้:

จุดที่ต้องระวังในหัวข้อนี้:

คำถามชวนคิด:

ตัวอย่างแบบลงมือดู

Example 1: ข้อมูลใน profile ของผู้ใช้ที่อาจไม่มี

ข้อมูลใน profile ของผู้ใช้มักไม่ครบเสมอ การคืน nil จากการค้นหาแบบปลอดภัยจึงสมเหตุ สมผล เมื่อคนเรียกสามารถตัดสินใจต่อเองได้ว่าจะเอาไปแสดงอย่างไร

user& . dig (: profile , :email ) worked_examples.md ruby วิธีนี้ดีกว่าการซ้อนเงื่อนไขลึก ๆ เพื่อเช็กข้อมูล optional ที่มีงานแค่นิดเดียว

Example 2: configuration ที่จำเป็นต้องมี

การดึง configuration เป็นตัวอย่างคู่เปรียบที่ชัดมาก เพราะ config ที่หายไปมักเป็นปัญหา ด้าน deployment หรือการตั้งค่า ไม่ใช่เรื่องปกติที่ยอมรับได้ในทุกวัน

เหตุผลที่ตัวอย่างนี้มีประโยชน์: