![Примерно так всё и было](https://habrastorage.org/storage2/fa0/4da/c73/fa04dac738de3cb229bd51221ea327b5.jpg)
Устали от полных кривизны и костылей сложных в поддержке программ? Постоянно слышите о правильной архитектуре, но так и не видели ее? Встречайте на Гитхабе Enterprise-версию программы FizzBuzz, показывающую, как должно выглядеть серьезное решение с правильной архитектурой.
Изначально FizzBuzz — очень простая программа, задуманная в качестве задания при собеседовании разработчиков для того, чтобы проверить, что они вообще в состоянии писать код. Обычно предполагается, что претендент напишет цикл с цепочным условием внутри и в общей сложности программа займет примерно 10 строк. Это годится в стрессовых условиях собеседования, но не подходит для серьезного бизнеса.
Enterprise версия решает ту же задачу, используя 10 интерфейсов, заботливо разложенных по пакету com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces и соответствующее серьезности задачи количество тщательно продуманных классов, разложенных по пакету com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl
Прекрасен класс NewLineStringReturner, который возвращает перенос строки, который затем используется механизмом вывода переноса строки NewLinePrinter. Такое претендент на собеседовании вряд ли напишет – он ничего не понимает в правильной архитектуре.
Отдельно прекрасен список «проблем»: «не используется XML», «репозиторий должен быть в Perforce», «нужен SOAP API», «нужна многопоточность» и другие в том же стиле. Все эти проблемы наверняка будут скоро решены, и мы получим эталон серьезного решения с правильной архитектурой.
Наконец-то.