~/VibeHandbook
PDF miễn phí

Chương 12 · 02

Danh sách kiểm tra khi gỡ lỗi

Hãy làm theo thứ tự này. Nhảy thẳng đến "sửa nó đi" là cách khiến AI đi lòng vòng.

  1. Tái hiện lỗi một cách đáng tin cậy. Tìm ra chính xác các bước khiến lỗi xảy ra mỗi lần. Một bug bạn không thể tái hiện được là một bug bạn không thể xác nhận đã sửa xong — bạn sẽ mãi chỉ đoán xem nó đã biến mất chưa. Nếu nó xảy ra không đều đặn, hãy tìm biến số nào khiến nó bật/tắt: một đầu vào cụ thể, trạng thái đã đăng nhập so với chưa đăng nhập, một mạng chậm.
  2. Đọc kỹ lỗi thực tế. Đừng lướt qua. Thông báo lỗi và phần đầu của stack trace thường nêu tên tệp và dòng nơi mọi thứ đã sai. Người mới thường lướt qua câu hữu ích nhất trên màn hình vì nó trông có vẻ đáng sợ.
  3. Thu thập ngữ cảnh. Gom lại nội dung lỗi, stack trace, đoạn mã liên quan, và một câu mô tả ngắn gọn về điều bạn kỳ vọng.
  4. Trao cho AI toàn cảnh bức tranh. Dán tất cả những điều trên vào một tin nhắn duy nhất. Để nó tự hình thành giả thuyết.
  5. Hình thành giả thuyết, chứ không phải bản sửa. Hỏi "điều gì có thể gây ra chuyện này?" trước khi hỏi "sửa cái này đi." Một bản sửa sai dựa trên một lý thuyết sai sẽ lãng phí thời gian — và đôi khi còn tạo ra bug thứ hai chồng lên bug đầu tiên.
  6. Thêm log để kiểm chứng giả thuyết. Xác nhận xem mã thực sự đang làm gì trước khi thay đổi nó.
  7. Tìm kiếm nhị phân (binary search) vấn đề. Thu hẹp nơi nó bị hỏng bằng cách cắt đôi vùng nghi vấn nhiều lần.
  8. Sửa nguyên nhân gốc rễ, không phải triệu chứng. Đảm bảo bản sửa giải quyết lý do tại sao nó bị hỏng, chứ không chỉ che đi trục trặc dễ thấy.
  9. Xác minh bản sửa và kiểm tra các lỗi hồi quy (regression). Chạy lại các bước tái hiện. Sau đó đảm bảo các tính năng lân cận vẫn hoạt động — một regression là khi một bản sửa lặng lẽ làm hỏng thứ gì đó từng hoạt động tốt, giống như vá một chỗ rò rỉ nhưng lại làm vỡ đường ống ngay bên cạnh.

Danh sách kiểm tra đó thực chất là một vòng lặp duy nhất mà bạn cưỡi trên đó cho đến khi bug biến mất. Mỗi ô trao bằng chứng cho ô tiếp theo, và một lần xác minh thất bại chỉ đưa bạn quay lại vòng lặp với những gì bạn vừa học được:

   ┌──────────────┐
   │  REPRODUCE   │  make it happen every time
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │ READ ERROR + │  what does it actually say?
   │   GATHER     │  collect trace + code + context
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │ HYPOTHESIS   │  "what could cause this?"
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │ CONFIRM w/   │  add a log, get evidence
   │   LOGGING    │
   └──────┬───────┘
     wrong│  correct
   ┌──────┘ guess   ▼
   │            ┌──────────────┐
   │ (new       │  FIX root    │  not the symptom
   │  theory)   │    cause     │
   │            └──────┬───────┘
   │                   ▼
   │            ┌──────────────┐    fails / regression
   └────────────┤   VERIFY     │──────────┐
                │ + regressions│          │
                └──────┬───────┘          │
                       │ passes           │
                       ▼          ◀───────┘
                    ✔ DONE      (loop back around)

Thứ tự này không phải ngẫu nhiên. Mỗi bước tạo ra bằng chứng mà bước tiếp theo cần. Tái hiện cho bạn thứ để đọc; đọc cho bạn ngữ cảnh để thu thập; ngữ cảnh cho AI thứ để đặt giả thuyết. Bỏ qua một bước và bạn đang cho bước tiếp theo ăn một lỗ hổng.

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í.