avva: (moose)
[personal profile] avva
(эта запись может быть интересна программистам и сочувствующим)

Наконец-то кто-то сделал важное и правильное дело: выложил в открытый доступ действительно качественное, основанное на правильных принципах решение известной проблемы FizzBuzz:

FizzBuzz Enterprise Edition

Я читал исходники и восхищался. Практически не к чему придраться, ну разве что я бы еще тестов добавил. Но само решение - высший класс.

Date: 2013-09-13 09:40 pm (UTC)
From: [identity profile] aa-kir.livejournal.com
Сразу видна разница между профессионалом и любителем. Я-то по наивности думал что задача решается в 5 - ну в 10- строк. А тут вишь как оно. Пойду изучу в подробностях :)))

Документации только маловато.

Date: 2013-09-13 11:41 pm (UTC)
From: [identity profile] meshko.livejournal.com
comments are a bad code smell

Date: 2013-09-13 09:42 pm (UTC)
From: [identity profile] dmarck.livejournal.com
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.FizzBuzzSolutionStrategyFactory;

Oh fsck. Make me unknow it ;-P

Date: 2013-09-13 09:48 pm (UTC)
From: [identity profile] spamsink.livejournal.com
Да уж, воистину showing the importance of programming style, in an ironic way.

Date: 2013-09-13 09:56 pm (UTC)
From: [identity profile] kosiakk.livejournal.com
Да ну. Просто плохой код. Ни потоков, ни облаков, ни даже нормальных модулей в Мавене. Не рассмешился :-/

Date: 2013-09-13 10:04 pm (UTC)
From: [identity profile] michk.livejournal.com
Про сочуствующих очень к месту.

Date: 2013-09-13 10:13 pm (UTC)
From: [identity profile] migmit.livejournal.com
Я вдохновился уже уровнем вложенности каталогов.

Date: 2013-09-13 10:22 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Не хватает горизонтального масштабирования вычислительного воркера и системы MapReduce для раздачи задач на кластер.

А вообще штука приятная, даже приятнее чем GNU Hello World (http://www.gnu.org/software/hello/).

Date: 2013-09-13 10:28 pm (UTC)
From: [identity profile] fat-yankey.livejournal.com
Ну как же не к чему придраться? А где maven-javadoc-plugin? Где maven-source-plugin? Даже если это internal product, не open source, должен на internal maven repo идти с исходным кодом. Так enterprise grade product не делают.
Edited Date: 2013-09-13 10:29 pm (UTC)

Date: 2013-09-13 11:18 pm (UTC)
From: [identity profile] grep.myopenid.com (from livejournal.com)
Ужасное нерасширяемое и неконфигурируемое решение.



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.

Date: 2013-09-14 06:13 am (UTC)
From: [identity profile] grep.myopenid.com (from livejournal.com)
злобный парсер съел псевдо-xml

Date: 2013-09-14 06:29 am (UTC)
From: [identity profile] grep.myopenid.com (from livejournal.com)
http://pastebin.com/yEKuSwFf

Date: 2013-09-14 12:21 am (UTC)
From: [identity profile] illy-drinker.livejournal.com
знакомый просил джава программистов написать код для состояния шахматной доски
По его словам процентов 70 пишут иерархию классов фигура, клетка, ряд клеток, доска и любят рисовать умл диаграммы о том как эти классы связаны и взаимодействуют

Date: 2013-09-14 06:08 am (UTC)
From: [identity profile] efix.livejournal.com
"Состояние шахматной доски" -- это что, конкретная расстановка фигур на ней?

Date: 2013-09-14 08:24 am (UTC)
From: [identity profile] onodera.livejournal.com
А что в этом плохого? Он же не просил их написать код для компактного представления состояния шахматной доски в памяти? А классовая иерархия гораздо нагляднее, нежели какой-нибудь массив из 64-х байт, где старший бит - это факт наличия фигуры, следующий - её цвет, а остальные кодируют Кр-Ф-Л-С-К-п.
Потом приходит change request: добавить в игру поддержку львов, светлячков и единорогов, а также сделать доску шестиугольной и ввести зелёные фигуры. После чего программа отправляется на полное переписывание, так как все алгоритмы были написаны под этот массив.

Date: 2013-09-14 03:24 pm (UTC)
From: [identity profile] kray-zemli.livejournal.com
Подозреваю, "профессиональный fizzbuzz" пришлось бы переписывать раз в 10 дольше.

Date: 2013-09-15 09:43 am (UTC)
From: [identity profile] db-ru.livejournal.com
Например FICS, на котором я играю (и который спокойно существует без единорогов уже без малого 20 лет), передает положение доски именно 64-байтовым массивом (на самом деле 71 - для читабельности используются пробелы между горизонталями). Черная фигура - строчная буква (kqrbnp), белая - заглавная, пустая клетка - '-'. Наглядность стопроцентная.
Edited Date: 2013-09-15 09:44 am (UTC)

Date: 2013-09-14 06:45 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Да ну, слабенько. Одна из цитат с критикой:

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.

Date: 2013-09-14 07:42 am (UTC)
From: [identity profile] janatem.livejournal.com
Блин, что за издевательство? Я до сего момента не знал, что такое FizzBuzz, и наивно ожидал увидеть нормальную математическую проблему (и ее решение).

Date: 2013-09-14 09:31 am (UTC)
From: [identity profile] kodt-rsdn.livejournal.com
Есть такая математическая проблема: самый медленный алгоритм сортировки.
С физбазом та же история: найти и генерализировать как можно больше точек в программе.

Date: 2013-09-14 09:12 am (UTC)
From: [identity profile] mperv.livejournal.com
а кто-нибудь из господ джавистов может мне объяснить, какой прикол как вот тут
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/blob/master/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/IntegerIntegerStringReturner.java
?

public String getIntegerReturnString(int theInteger) {
Integer myInteger = new Integer(theInteger);
StringBuilder myStringBuilder = new StringBuilder(myInteger.toString());
String myString = myStringBuilder.toString();
return new String(myString);
}

кажется тут все можно заменить на return Integer.toString(theInteger);

Date: 2013-09-15 04:04 pm (UTC)
From: [identity profile] valshooter.livejournal.com
По-моему, не хватает модуля для чтения писем.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 06:03 pm
Powered by Dreamwidth Studios