"Vertical Slice" (Lát Cắt Dọc) Nghĩa Là Gì
Một vertical slice (lát cắt dọc) là một mảnh mỏng của tính năng xuyên suốt toàn bộ ứng dụng của bạn — một chút giao diện, một chút logic, một chút dữ liệu — thay vì xây dựng trọn vẹn từng lớp một.
Cách tiếp cận hấp dẫn nhưng sai (theo chiều ngang - horizontal):
- Xây toàn bộ schema cơ sở dữ liệu.
- Rồi xây toàn bộ logic .
- Rồi xây toàn bộ giao diện (UI).
Bạn không thể chạy bất cứ thứ gì cho đến khi cả ba xong, nên bạn không thể phát hiện vấn đề sớm.
Cách tiếp cận tốt hơn (theo chiều dọc - vertical):
- Bước 1: một nút bấm làm phiên bản đơn giản nhất có thể của thứ đó, với dữ liệu giả.
- Bước 2: cho nó dùng dữ liệu thật.
- Bước 3: xử lý các trường hợp biên ( case).
Sự khác biệt dễ thấy nhất khi đặt cạnh nhau. Cách xây theo chiều ngang xây trọn từng lớp một và không chạy được gì cho đến hết; cách xây theo chiều dọc xây một dải mỏng chạy được xuyên qua mọi lớp ở mỗi bước:
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
Mỗi lát cắt đều chạy được. Đó là điều giữ cho ứng dụng luôn luôn hoạt động.
Một phép thử hữu ích cho một lát cắt tốt: bạn có thể demo nó không? Nếu bạn có thể chỉ vào màn hình và nói "xem cái này này," thì đó là một vertical slice thật sự. Nếu lời demo trung thực duy nhất là "à thì, cái schema đã có sẵn rồi," bạn đã xây một lớp ngang, và bạn sẽ không biết nó có đúng hay không cho đến rất lâu sau — thường là vào thời điểm tệ nhất có thể.