~/VibeHandbook
PDF ฟรี

บท 06 · 03

วงรอบ: ความตั้งใจ → สร้าง → ตรวจสอบ → ปรับแก้

ทุกอย่างในหนังสือเล่มนี้วนกลับมาที่วงรอบเดียวนี้ จงจำมันให้ขึ้นใจ

วงรอบนี้จะหมุนไปเรื่อยๆ จนกว่าผลลัพธ์จะถึงมาตรฐานของคุณ — และการตรวจสอบคือประตูที่มันต้องผ่านทุกครั้ง:

   ┌──────────────────────────────────────────────┐
   │                                               │
   ▼                                               │
┌────────┐    ┌──────────┐    ┌────────┐    ┌──────────┐
│ INTENT │ ─▶ │ GENERATE │ ─▶ │ REVIEW │ ─▶ │  REFINE  │
│ (spec) │    │  (AI)    │    │ (you)  │    │  (you)   │
└────────┘    └──────────┘    └───┬────┘    └──────────┘
                                  │
                            pass? ▼
                            ┌──────────┐
                            │   SHIP   │
                            └──────────┘
  1. ความตั้งใจ (Intent) ระบุสิ่งที่คุณต้องการและข้อจำกัดที่สำคัญ — อินพุต เอาต์พุต เคสขอบ ( case) สแตกที่ใช้ สไตล์การเขียน ความตั้งใจที่คลุมเครือจะให้โค้ดที่คลุมเครือ
  2. สร้าง (Generate) ปล่อยให้โมเดลเขียนส่วนที่ทำงานจริง อย่าจับมือมันเขียนไวยากรณ์ทีละบรรทัด แต่อธิบายพฤติกรรมที่ต้องการ
  3. ตรวจสอบ (Review) อ่านสิ่งที่ได้กลับมา มันทำในสิ่งที่ควรทำจริงหรือไม่ มันจัดการกับลิสต์ว่าง ค่า null หรือการเรียกเครือข่ายที่ล้มเหลวหรือไม่ นี่คือเวอร์ชัน ที่ง่ายที่สุด ที่ใช้งานได้แล้วหรือยัง
  4. ปรับแก้ (Refine) ชี้จุดที่ผิด ให้การแก้ไขที่เป็นรูปธรรม แล้วสร้างใหม่ ทำซ้ำจนกว่าจะถึงมาตรฐานของคุณ

ผู้เริ่มต้นส่วนใหญ่ข้ามขั้นตอนที่ 3 ไป พวกเขาสร้าง มันรัน แล้วก็ไปต่อ จากนั้นมันก็พังในโปรดักชันด้วยเคสที่ไม่เคยถูกระบุไว้เลย ขั้นตอนการตรวจสอบคือจุดที่งานวิศวกรรมเกิดขึ้นจริง

นี่คือตัวอย่างพรอมป์แรกที่ดีในวงรอบนี้:

Write a TypeScript function `parseDuration(input: string): number`
that converts strings like "1h30m", "45s", "2d" into total seconds.

Requirements:
- Support units: d (days), h (hours), m (minutes), s (seconds).
- Multiple units can combine: "1h30m" = 5400.
- Reject invalid input (empty, unknown units, negative) by throwing
  an Error with a clear message.
- No external libraries. Include 5 unit tests covering the edge cases.

Show the function and tests only.

สังเกตโครงสร้าง: ลายเซ็นฟังก์ชันที่แม่นยำ กฎที่ชัดเจน เคสขอบที่ถูกระบุออกมา ข้อจำกัดที่ระบุไว้ และคำขอให้มีเทสต์ด้วย คุณไม่ได้หวังว่าโมเดลจะเดาถูก — คุณกำลังกำจัดความคลุมเครือที่ทำให้เกิดการเดาผิด

ขั้นตอนการปรับแก้เป็นทักษะพอๆ กับพรอมป์แรกเลย ฟีดแบ็กที่คลุมเครือจะได้การแก้ไขที่คลุมเครือ ลองเปรียบเทียบการแก้ไขสองแบบนี้:

Bad:  "this is wrong, fix it"

Good: "parseDuration('1h30m') returns 90 instead of 5400 — you're
       summing the numbers but ignoring the unit multipliers. Multiply
       each value by its unit's seconds (d=86400, h=3600, m=60, s=1)
       before summing. Also add a test for the combined case '2d3h'."

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

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

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