Демонстрация принципов dependency injection и использования DI-контейнеров.
- Внедрить Ninject container для создания Program. (см. метод Program.Main)
- Добавить команду HelpCommand, печатающую список всех доступных команд (в том числе себя).
- Сделать явной зависимость от TextWriter и использовать его, вместо консоли и в командах и в Program.
- Convention over configuration. Заменить конфигурирование конкретных классов и интерфейсов определением общего правила.
Провести рефакторинг класса AiTester, выполнив следующие пункты:
- Сделать явными основные зависимости в классе AiTester
- Собрать граф объектов в Main с помощью NInject
- В отдельной ветке сделать алтернативный рефакториг с помощью DEP. А именно:
- Убрать зависимость Ai от ProcessMonitor
- Отделить перезапуск Ai
- Отделить логгирование
- Отделить создание последовательности игр
- Отделить подсчет итоговой статистики
- Во всех предыдущих пунктах стараться избавляться от зависимостей, где это возможно.
- [опционально] попробовать FakeItEasy