"縱向切片"是什麼意思
一個縱向切片是功能裡一道薄薄的、貫穿你整個應用的片段——一點 UI、一點邏輯、一點資料——而不是一次只構建一整層。
誘人卻錯誤的做法(橫向):
- 先把整個資料庫 schema 建好。
- 然後把所有後端邏輯寫完。
- 然後把整個 UI 做完。
三者全部做完之前,你什麼都跑不起來,所以沒法及早抓住問題。
更好的做法(縱向):
- 第 1 步:一個按鈕,用假資料做出這件事最簡單的可能版本。
- 第 2 步:讓它用上真實資料。
- 第 3 步:處理邊界情況。
把兩者並排放著看,差別最清楚。橫向一次只造一整層,到最後才能執行;縱向每一步都造出一條貫穿所有層的、可執行的薄帶:
水平 (有風險) 垂直 (安全)
執行? ▼
┌──────────────────────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐
│ UI │ │ UI │ │ UI │ │ UI │ │ UI │
├──────────────────────┤ ├────┤ ├────┤ ├────┤ ├────┤
│ LOGIC │ │logic││logic││logic││logic│
├──────────────────────┤ ├────┤ ├────┤ ├────┤ ├────┤
│ DATA │ │data│ │data│ │data│ │data│
└──────────────────────┘ └────┘ └────┘ └────┘ └────┘
先建全部 3 個,再執行 每步單獨執行
(到最後才能執行) 每步各自獨立執行
每個切片都可執行。這正是讓應用始終保持可執行的關鍵。
一個判斷好切片的實用測試:你能演示它嗎? 如果你能指著螢幕說"看這個",那它就是一個真正的縱向切片。如果唯一誠實的演示是"嗯,schema 現在搭好了",那你構建的是一個橫向層,而它對不對,你要到很久以後——通常是在最糟的時刻——才會知道。