~/VibeHandbook
免費 PDF

11 · 02

"縱向切片"是什麼意思

一個縱向切片是功能裡一道薄薄的、貫穿你整個應用的片段——一點 UI、一點邏輯、一點資料——而不是一次只構建一整層。

誘人卻錯誤的做法(橫向):

  • 先把整個資料庫 schema 建好。
  • 然後把所有後端邏輯寫完。
  • 然後把整個 UI 做完。

三者全部做完之前,你什麼都跑不起來,所以沒法及早抓住問題。

更好的做法(縱向):

  • 第 1 步:一個按鈕,用假資料做出這件事最簡單的可能版本。
  • 第 2 步:讓它用上真實資料。
  • 第 3 步:處理邊界情況。

把兩者並排放著看,差別最清楚。橫向一次只造一整層,到最後才能執行;縱向每一步都造出一條貫穿所有層的、可執行的薄帶:

        水平 (有風險)                 垂直 (安全)
                                                          執行? ▼
   ┌──────────────────────┐    ┌────┐ ┌────┐ ┌────┐ ┌────┐
   │        UI            │    │ UI │ │ UI │ │ UI │ │ UI │
   ├──────────────────────┤    ├────┤ ├────┤ ├────┤ ├────┤
   │       LOGIC          │    │logic││logic││logic││logic│
   ├──────────────────────┤    ├────┤ ├────┤ ├────┤ ├────┤
   │        DATA          │    │data│ │data│ │data│ │data│
   └──────────────────────┘    └────┘ └────┘ └────┘ └────┘
   先建全部 3 個,再執行         每步單獨執行
   (到最後才能執行)              每步各自獨立執行

每個切片都可執行。這正是讓應用始終保持可執行的關鍵。

一個判斷好切片的實用測試:你能演示它嗎? 如果你能指著螢幕說"看這個",那它就是一個真正的縱向切片。如果唯一誠實的演示是"嗯,schema 現在搭好了",那你構建的是一個橫向層,而它對不對,你要到很久以後——通常是在最糟的時刻——才會知道。

想離線閱讀?

免費下載整本書的 PDF 或 EPUB。