~/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。