Я делаю ролевую игру для развлечения и пытаюсь использовать TDD при ее разработке. Я вижу, что во многих примерах TDD основное внимание уделяется созданию теста, а затем созданию объектов, необходимых для прохождения теста.
Например:
[Test]
public void Character_WhenHealthIsBelowZero_IsDead()
{
// create default character with 10 health
Character character = new Character();
character.SubtractHealth(20);
Assert.That(character.IsAlive, Is.EqualTo(false));
}
Итак, на основании этого я создам класс персонажа и соответствующие свойства / методы. Это кажется хорошим, и все, но должен ли мой классный дизайн действительно выходить из постоянного совершенствования моих тестов? Это лучше, чем наметить возможные объекты, которые понадобятся моей игре раньше времени? Например, я обычно думаю о базовом классе символов, а затем о подклассах, таких как Wizard, Fighter, Theif.
Или сбалансированный подход - это путь? Тот, где я намечаю возможные классы и иерархию, которые мне понадобятся, но сначала пишу тесты, чтобы убедиться, что они действительно нужны?