Пример
Ката для боулинга очень понравилась: правила простые, есть несколько неожиданных усложнений. Главное — правильно разбить задачу на микро шаги. Начать с самых простых, постепенно увеличивая понимание игры:
- в начале игры счёт ноль
- после броска на 4 кегли счёт равен 4,
- если бросить 4, а затем 5, то счёт равен 9,
- больше 10 бросить нельзя,
- меньше 10 бросить нельзя
- в сумме двух бросков нельзя сбить больше 10
- после 20 бросков игра заканчивается
- если сбивать 10 кеглей, то игра закончится после 10 бросков
- максимальный счёт 100 (позже это изменится)
И так далее. Потом добавятся страйки, спейры и дополнительные броски. Код приходится несколько раз переделывать, ведь появляются новые требования: меняется структуру данных, способ расчёта, а тесты показывают, если что-то сломается. Видно весь кайф от протестированного продукта.
Я попробовал решить, комитя после каждого теста. Можно посмотреть: https://github.com/akaDuality/BowlingKata
Другая ката, про водителей автобусов и слухи: https://github.com/akaDuality/BusGossips
Ката для боулинга очень понравилась: правила простые, есть несколько неожиданных усложнений. Главное — правильно разбить задачу на микро шаги. Начать с самых простых, постепенно увеличивая понимание игры:
- в начале игры счёт ноль
- после броска на 4 кегли счёт равен 4,
- если бросить 4, а затем 5, то счёт равен 9,
- больше 10 бросить нельзя,
- меньше 10 бросить нельзя
- в сумме двух бросков нельзя сбить больше 10
- после 20 бросков игра заканчивается
- если сбивать 10 кеглей, то игра закончится после 10 бросков
- максимальный счёт 100 (позже это изменится)
И так далее. Потом добавятся страйки, спейры и дополнительные броски. Код приходится несколько раз переделывать, ведь появляются новые требования: меняется структуру данных, способ расчёта, а тесты показывают, если что-то сломается. Видно весь кайф от протестированного продукта.
Я попробовал решить, комитя после каждого теста. Можно посмотреть: https://github.com/akaDuality/BowlingKata
Другая ката, про водителей автобусов и слухи: https://github.com/akaDuality/BusGossips