~/VibeHandbook
PDF ฟรี

บท 08 · 02

ระบุ Input, Output และกรณีขอบ (Edge Case)

งานหนึ่งจะยังไม่ถูกนิยามจนกว่าขอบเขตของมันจะถูกนิยาม วิศวกรมือเก๋าคิดในรูปแบบ "อะไรเข้า อะไรออก และเกิดอะไรขึ้นเมื่อสิ่งต่าง ๆ ผิดพลาด" ให้ใส่สิ่งนี้ลงในพรอมต์ด้วย

Write a function to parse a date string.
Write a function parseDate(input: string): Date | null.

Inputs: ISO 8601 strings ("2026-06-14", "2026-06-14T10:30:00Z").
Output: a Date object, or null if the string is invalid.

Edge cases to handle:
- empty string or whitespace -> null
- valid format but impossible date (2026-02-30) -> null
- trailing garbage ("2026-06-14xyz") -> null

Do not throw. Return null for all invalid input.

เมื่อคุณระบุกรณีขอบไว้ AI จะจัดการมันให้ เมื่อคุณไม่ระบุ มันจะเขียนแค่เส้นทางที่ราบรื่นที่สุด (happy path) แล้วคุณจะไปพบช่องโหว่เอาตอนใช้งานจริง (production) หลักการเดียวกันนี้ใช้ได้กว้างกว่าแค่ฟังก์ชันล้วน ๆ: สำหรับ หนึ่งตัว ให้ระบุทั้งการตอบกลับเมื่อสำเร็จ และ การตอบกลับเมื่อผิดพลาด (จะให้ อะไรเมื่ออีเมลซ้ำ? เมื่อ body ผิดรูปแบบ?) สำหรับคอมโพเนนต์ UI ให้ระบุสถานะว่างเปล่าและสถานะกำลังโหลดด้วย ไม่ใช่แค่ตอนมีข้อมูลเต็ม พฤติกรรมที่น่าสนใจที่สุดของซอฟต์แวร์ส่วนใหญ่อยู่ที่ขอบของมัน ดังนั้นนั่นคือจุดที่พรอมต์ของคุณควรใช้คำมากที่สุด

ถ้าคุณไม่แน่ใจว่ากรณีขอบมีอะไรบ้าง ให้ถาม AI ก่อน: "ตัว parser วันที่ควรจัดการกรณีขอบอะไรบ้าง?" — แล้วนำคำตอบนั้นมาป้อนกลับเป็นข้อจำกัด วิธีนี้เปลี่ยน AI จากตัวสร้างโค้ดให้กลายเป็นตัวสร้างเช็กลิสต์ และการตรวจสอบเช็กลิสต์นั้นเร็วกว่าการดีบักกรณีที่คุณลืมนึกถึง

อยากได้แบบออฟไลน์?

ดาวน์โหลดหนังสือทั้งเล่มเป็น PDF หรือ EPUB — ฟรี