~/VibeHandbook
PDF ฟรี

บท 11 · 02

"Vertical Slice" คืออะไร

Vertical slice (ชิ้นส่วนแนวตั้ง) คือชิ้นบาง ๆ ของฟีเจอร์ที่ทะลุผ่านแอปของคุณตลอดทั้งสาย — มี UI นิดหน่อย มีตรรกะนิดหน่อย มีข้อมูลนิดหน่อย — แทนที่จะสร้างทีละชั้นทั้งชั้น

แนวทางที่น่าดึงดูดแต่ผิด (แนวนอน — horizontal):

  • สร้างสคีมาฐานข้อมูลทั้งหมดก่อน
  • แล้วสร้างตรรกะฝั่งเซิร์ฟเวอร์ () ทั้งหมด
  • แล้วสร้าง UI ทั้งหน้า

คุณจะรัน อะไรไม่ได้เลย จนกว่าทั้งสามอย่างจะเสร็จ ดังนั้นคุณจึงจับปัญหาแต่เนิ่น ๆ ไม่ได้

แนวทางที่ดีกว่า (แนวตั้ง — vertical):

  • ขั้นตอนที่ 1: ปุ่มที่ทำเวอร์ชันง่ายที่สุดของสิ่งนั้น โดยใช้ข้อมูลปลอม
  • ขั้นตอนที่ 2: ให้มันใช้ข้อมูลจริง
  • ขั้นตอนที่ 3: จัดการกรณีขอบ ( case)

ความต่างนี้เห็นได้ชัดที่สุดเมื่อวางเทียบกัน แนวนอนสร้างทีละชั้นเต็มชั้นและไม่รันอะไรเลยจนกว่าจะจบ ส่วนแนวตั้งสร้างแถบบาง ๆ ที่รันได้ทะลุทุกชั้นในแต่ละขั้นตอน:

        HORIZONTAL (risky)            VERTICAL (safe)
                                                          run? ▼
   ┌──────────────────────┐    ┌────┐ ┌────┐ ┌────┐ ┌────┐
   │        UI            │    │ UI │ │ UI │ │ UI │ │ UI │
   ├──────────────────────┤    ├────┤ ├────┤ ├────┤ ├────┤
   │       LOGIC          │    │logic││logic││logic││logic│
   ├──────────────────────┤    ├────┤ ├────┤ ├────┤ ├────┤
   │        DATA          │    │data│ │data│ │data│ │data│
   └──────────────────────┘    └────┘ └────┘ └────┘ └────┘
   build all 3, THEN run        step1  step2  step3  step4
   (can't run till the end)      each step runs on its own

แต่ละ slice รันได้ นั่นแหละคือสิ่งที่ทำให้แอปทำงานได้อยู่เสมอ

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

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

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