Test Driven Development.
TDD проинформирует ваш дизайн, потому что он побуждает вас задавать вопросы типа «что мне нужно сделать» и облегчает вам уверенный рефакторинг по ходу делачерез ваши ревизии.Это также побуждает делать вещи максимально простыми, что всегда хорошо.