Релиз новой игры: Numeromania


После месяца разработки и недели ожидания ревью свершилось: Нумеромания уже в апсторе.

Игра изначально писалась без претензии на завоевание мировой славы. Меня всегда поражали адепты TDD, утверждавшие, что без тестов жизнь разработчика темна и беспросветна, что только тесты могут ускорить выход продукта и т.д. и т.п. Вот ради подтверждения или опровержения (в первую очередь для себя) применимости TDD  как подхода эта игра и была задумана.


Отчасти именно TDD объясняется такой большой срок разработки такой элементарной игры. Для меня тесты никогда не были чем-то на 100% необходимым, но раз начал эксперимент, его необходимо было закончить.

Игра представляет собой математическую головоломку. Три числа и две математические операции на строку и столбец и результат вычисления.

TDD - разработка через тестирование, или Test Driven Development предполагает, что сначала пишутся тесты, а только потом код. В итоге тестов оказалось не так уж и много, как я мог подумать ранее.

Работать по TDD оказалось не особо напряжено, но пришлось перестраивать свое мышление. Архитектура получилась довольно модульной, но, местами и перемудренной. Все из-за того, что приходилось постоянно думать о том как "это" тестировать. И, хотя, интерфейсы классов получились красивыми, сама-же реализация получалась в итоге не очень элегантной. Так как код писался только тот, и только так, чтобы он проходил тесты.

Поскольку UI, назовем его так, не сильно выдающийся, а логики было довольно много, то TDD показал себя очень неплохо. Основные моменты - сериализация/десериализация/генерация уровней/анимации были покрыты тестами на 100%. Благодаря этому реализовать все получилось довольно таки быстро, а заодно были выловлены такие неочевидные моменты и нюансы (откровенно говоря баги), которые было-бы довольно сложно найти во время тестовых игр, или потом, по краш-репортам, но уже после того, как игра вышла бы в стор.

Также отдельная песня - это тестирование UI и тестирование "состояний" (без них никуда): приходилось тратить очень много времени, чтобы придумать как это протестировать, хотя полное представление о том, какой код в итоге тестировать уже было.

Вместо выводов: TDD - довольно мощный инструмент, но с очень ограниченной сферой применения. Все тестировать не нужно, и даже вредно. Но иногда тесты оказываются очень полезны и экономят кучу времени. Например в написании логики.

Также: Продаем контент изiTunes в своем приложении

Комментарии

Популярные сообщения из этого блога

Алгоритм NEAT. Эволюционирующие нейронные сети возрастающих топологий.

Цепи Маркова простыми словами. Пишем пирожки.