Здравствуй, хабрачитатель. Я – редактор блога ABBYY. Сегодня утром ко мне пришли разработчики, принесли вот этот текст и попросили напечатать. Я не смогла придумать, почему этот текст должен появиться в корпоративном блоге, но разработчики говорят, что он смешной и принесёт радость людям. Так тому и быть!
Устали от полных кривизны и костылей сложных в поддержке программ? Постоянно слышите о правильной архитектуре, но так и не видели ее? Встречайте на Гитхабе 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», «нужна многопоточность» и другие в том же стиле. Все эти проблемы наверняка будут скоро решены, и мы получим эталон серьезного решения с правильной архитектурой.
Наконец-то.
Автор: luciana