Задание на летнюю стажировку в JetBrains
В данном задании я решил использовать подход, подразумевающий возможность расширения приложения, а также удобство тестирования каждого компонента в отдельностию. Наверное это задание можно было сделать за ~300-400 строчек кода, но такой код было бы сложно расширять и тестировать.
В моей программе активно используются интерфейсы и абстрактные классы, а также аннотации. Применен паттерн проектирования "Фабрика" (Надеюсь, что он именно так называется).
Я попытался красиво задокумментировать код на русском языке используя JavaDoc
В решении использованы Unit-тесты на JUnit 4, написанные почти к каждому классу, классы работающие с консолью тестами не покрыты (Так как мне кажется, что это уже скорее UI-тестирование)
Для парсинга JSON используется библиотека GSon, а для поиска всех классов-наследников CLICommand - библиотека Reflections.
Очень надеюсь, что вам понравился мой подход (и код) :)