Что значит «вертикальный срез»
Вертикальный срез — это тонкий кусок функции, который проходит насквозь через всё приложение — немного UI, немного логики, немного данных — вместо построения одного целого слоя за раз.
Заманчивый, но неправильный подход (горизонтальный):
- Построить всю схему базы данных.
- Затем построить всю бэкенд-логику.
- Затем построить весь UI.
Вы не можете запустить ничего, пока все три не готовы, поэтому не можете отлавливать проблемы рано.
Лучший подход (вертикальный):
- Шаг 1: кнопка, делающая простейшую возможную версию задуманного, с фейковыми данными.
- Шаг 2: заставить её использовать настоящие данные.
- Шаг 3: обработать краевые случаи.
Разница виднее всего бок о бок. Горизонтальный строит один целый слой за раз и не запускает ничего до самого конца; вертикальный на каждом шаге строит тонкую запускаемую полосу через все слои:
ГОРИЗОНТАЛЬ (риск) ВЕРТИКАЛЬ (безопасно)
запуск? ▼
┌──────────────────────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐
│ UI │ │ UI │ │ UI │ │ UI │ │ UI │
├──────────────────────┤ ├────┤ ├────┤ ├────┤ ├────┤
│ LOGIC │ │logic││logic││logic││logic│
├──────────────────────┤ ├────┤ ├────┤ ├────┤ ├────┤
│ DATA │ │data│ │data│ │data│ │data│
└──────────────────────┘ └────┘ └────┘ └────┘ └────┘
собрать все 3, ПОТОМ запуск каждый шаг по отдельности
(нельзя запустить до конца) каждый шаг работает сам по себе
Каждый срез запускаем. Именно это удерживает приложение всегда-работающим.
Полезная проверка хорошего среза: можете ли вы его продемонстрировать? Если вы можете показать на экран и сказать «смотри», это настоящий вертикальный срез. Если единственная честная демонстрация — «ну, схема теперь на месте», вы построили горизонтальный слой и не узнаете, правилен ли он, ещё долго — обычно в самый неподходящий момент.