Сразу видна разница между профессионалом и любителем. Я-то по наивности думал что задача решается в 5 - ну в 10- строк. А тут вишь как оно. Пойду изучу в подробностях :)))
Документации только маловато.
comments are a bad code smell
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.FizzBuzzSolutionStrategyFactory;
Oh fsck. Make me unknow it ;-P
Да уж, воистину showing the importance of programming style, in an ironic way.
Да ну. Просто плохой код. Ни потоков, ни облаков, ни даже нормальных модулей в Мавене. Не рассмешился :-/
Про сочуствующих очень к месту.
Я вдохновился уже уровнем вложенности каталогов.
Не хватает горизонтального масштабирования вычислительного воркера и системы MapReduce для раздачи задач на кластер. А вообще штука приятная, даже приятнее чем GNU Hello World.
Ну как же не к чему придраться? А где maven-javadoc-plugin? Где maven-source-plugin? Даже если это internal product, не open source, должен на internal maven repo идти с исходным кодом. Так enterprise grade product не делают.
Edited at 2013-09-13 22:29 (UTC)
Ужасное нерасширяемое и неконфигурируемое решение.
com.seriousbusiness.fizzbuzz.IntegerRangeIterator com.seriousbusiness.fizzbuzz.impl.condition.IntegerDivisionChecker com.seriousbusiness.fizzbuzz.config.FizzBuzzStrategyConstants.FIZZ_DIVISOR com.seriousbusiness.fizzbuzz.impl.actors.printers.FizzStringPrinter
etc.
злобный парсер съел псевдо-xml
знакомый просил джава программистов написать код для состояния шахматной доски По его словам процентов 70 пишут иерархию классов фигура, клетка, ряд клеток, доска и любят рисовать умл диаграммы о том как эти классы связаны и взаимодействуют
"Состояние шахматной доски" -- это что, конкретная расстановка фигур на ней?
А что в этом плохого? Он же не просил их написать код для компактного представления состояния шахматной доски в памяти? А классовая иерархия гораздо нагляднее, нежели какой-нибудь массив из 64-х байт, где старший бит - это факт наличия фигуры, следующий - её цвет, а остальные кодируют Кр-Ф-Л-С-К-п. Потом приходит change request: добавить в игру поддержку львов, светлячков и единорогов, а также сделать доску шестиугольной и ввести зелёные фигуры. После чего программа отправляется на полное переписывание, так как все алгоритмы были написаны под этот массив.
Подозреваю, "профессиональный fizzbuzz" пришлось бы переписывать раз в 10 дольше.
Например FICS, на котором я играю (и который спокойно существует без единорогов уже без малого 20 лет), передает положение доски именно 64-байтовым массивом (на самом деле 71 - для читабельности используются пробелы между горизонталями). Черная фигура - строчная буква (kqrbnp), белая - заглавная, пустая клетка - '-'. Наглядность стопроцентная.
Edited at 2013-09-15 09:44 (UTC)
Да ну, слабенько. Одна из цитат с критикой:
This codebase has a number of issues to resolve before it can be truly enterprise ready. Configuration is non-existent and needs to be moved into an XML layer or even better a naming service such as JNDI or LDAP. The author should consider using dependency injection to build his objects rather than invoking constructors and factories directly. As it stands you have to recompile the project to change even the simplest settings. The most glaring error is any kind of externally configurable logging which is absolutely required to be enterprise ready. There is also a complete lack of metrics or management code. Adding some JMX support would be a good start and ideally some statsd integration so you can get some runtime insights into what the code is doing. Right now the whole thing is just a black box. How are you supposed to monitor and track this thing? At an architectural level there is no reliability guarantee on execution either. If you crash half way through, have a power outage etc, you have to manually restart the process. The whole thing should be triggered by a durable message queue and actually processed by a set of redundant back-end services which would guarantee execution and deliver the finalized document asynchronously. This would also decouple resource usage and allow different SLAs (service level agreements). As it stands, I have no way of guaranteeing resource availability to my Gold customers and thus no way to actually deliver on contractual performance guarantees which may have been made by the sales team. Our top tier customers for example would probably have dedicated boxes reserved for handling just their traffic. Which of course requires some level of identity services/authentication. In summary: we are missing * configuration * logging * metrics * monitoring * reliability * SLA support * security/authentication This is a good start though.
Блин, что за издевательство? Я до сего момента не знал, что такое FizzBuzz, и наивно ожидал увидеть нормальную математическую проблему (и ее решение).
Есть такая математическая проблема: самый медленный алгоритм сортировки. С физбазом та же история: найти и генерализировать как можно больше точек в программе.
По-моему, не хватает модуля для чтения писем. |