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 หรือการตั้งค่า ไม่ใช่เรื่องปกติที่ยอมรับได้ในทุกวัน
เหตุผลที่ตัวอย่างนี้มีประโยชน์: