~/VibeHandbook
PDF miễn phí

Chương 06 · 03

Vòng lặp: ý định → tạo → xem xét → tinh chỉnh

Mọi thứ trong cuốn sách này đều quay về một chu trình duy nhất. Hãy khắc ghi nó.

Vòng lặp xoay cho đến khi kết quả đạt chuẩn của bạn — và bước xem xét là cánh cổng nó phải vượt qua mỗi lần:

   ┌──────────────────────────────────────────────┐
   │                                               │
   ▼                                               │
┌────────┐    ┌──────────┐    ┌────────┐    ┌──────────┐
│ INTENT │ ─▶ │ GENERATE │ ─▶ │ REVIEW │ ─▶ │  REFINE  │
│ (spec) │    │  (AI)    │    │ (you)  │    │  (you)   │
└────────┘    └──────────┘    └───┬────┘    └──────────┘
                                  │
                            pass? ▼
                            ┌──────────┐
                            │   SHIP   │
                            └──────────┘
  1. Ý định. Nêu rõ điều bạn muốn và những ràng buộc quan trọng — đầu vào, đầu ra, các trường hợp biên, stack công nghệ, phong cách. Ý định mơ hồ sẽ cho ra code mơ hồ.
  2. Tạo. Để mô hình viết phần triển khai. Đừng cầm tay chỉ việc từng cú pháp; hãy mô tả hành vi.
  3. Xem xét. Đọc kỹ những gì trả về. Nó có thực sự làm đúng việc không? Nó có xử lý danh sách rỗng, giá trị null (rỗng), hay cuộc gọi mạng thất bại không? Đây có phải là phiên bản đơn giản nhất hoạt động được không?
  4. Tinh chỉnh. Chỉ ra điều gì sai, đưa ra một sửa chữa cụ thể, và tạo lại. Lặp lại cho đến khi đạt chuẩn của bạn.

Hầu hết người mới bắt đầu bỏ qua bước 3. Họ tạo ra, nó chạy được, rồi họ tiếp tục. Sau đó nó sụp đổ trong môi trường sản xuất ở trường hợp mà họ chưa bao giờ mô tả. Bước xem xét chính là nơi công việc kỹ thuật thực sự diễn ra.

Đây là ví dụ về một đầu tiên tốt trong vòng lặp này:

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.

Hãy chú ý cấu trúc: một chữ ký hàm chính xác, các quy tắc rõ ràng, các trường hợp biên được nêu cụ thể, các ràng buộc được nói rõ, và một yêu cầu kèm test. Bạn không hy vọng mô hình đoán đúng — bạn đang loại bỏ sự mơ hồ vốn là nguyên nhân sinh ra những phỏng đoán tồi.

Bước tinh chỉnh cũng là một kỹ năng quan trọng không kém prompt đầu tiên. Phản hồi mơ hồ sẽ cho ra sửa chữa mơ hồ. Hãy so sánh hai lời sửa chữa sau:

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'."

Phiên bản tốt nêu rõ triệu chứng, nguyên nhân, và cách sửa. Bạn đang xem xét giống như bạn xem xét của một đồng nghiệp — và bạn chỉ ra càng chính xác, bạn càng tốn ít vòng lặp. Mỗi vòng lặp nên hội tụ. Nếu bạn thấy mình đang đi lòng vòng, đó là tín hiệu cho thấy ý định của bạn chưa được đặc tả đầy đủ; hãy dừng việc tạo lại và viết lại đặc tả thay vào đó.

Muốn bản ngoại tuyến?

Tải trọn cuốn sách dưới dạng PDF hoặc EPUB — miễn phí.