Джава: Читабельность и немного ФП

pitrik2

советую не только джавистам сходить по ссылке, там много чего интеренсого написано

Есть задачи, которые удобнее всего решать в функциональном стиле. Среди этих задач есть такие, которые можно лаконично и читаемо решить и на джаве.
Речь пойдет именно о них.
.
Также речь пойдет о том, как рефакторить код, неосознанно написанный в функциональном стиле (типа new AndFilter(new FieldMatchesPatternFilter(new FieldReference("name" ".*John.*" new BlaBlaBlaFilter в читаемую и лаконичную форму.
.
DISCLAIMER:
Большая часть из этого не имеет отношения к собственно ФП. В основном будет про повышение читаемости некоторых часто встречающихся паттернов, которые особенно часто встречаются при использовании функционального стиля, и без которых об ФП не может быть и речи.
.
Про приемы собственно ФП будет совсем немного, ближе к концу.
.
.
Беды наши:
- "kingdom of nouns" (традиция считать все на свете существительным и считать, что вычислить сумму двух чисел можно только, создав экземпляр ЧисленногоСумматора и любезно послав ему сообщение)
- Отсутствие встроенного синтаксиса для конструирования данных - пар, списков итп
- Плохой синтаксис генериков и отсутствие нормального вывода типов и нормального полиморфизма
Орудия наши - import static, varargs и немного пороха в пороховницах.

kruzer25

Также речь пойдет о том, как рефакторить код, неосознанно написанный в функциональном стиле (типа new AndFilter(new FieldMatchesPatternFilter(new FieldReference("name" ".*John.*" new BlaBlaBlaFilter в читаемую и лаконичную форму.
Хм, а зачем :confused:
От того, чтобы переделать этот пример совсем по-другому, ничего читабельнее не станет. Вот развить твой пример, немного подправить там, немного - тут, уже имеет смысл.
"kingdom of nouns" (традиция считать все на свете существительным и считать, что вычислить сумму двух чисел можно только, создав экземпляр ЧисленногоСумматора и любезно послав ему сообщение)
Почему бы и нет?
Плохой синтаксис генериков и отсутствие нормального вывода типов и нормального полиморфизма
Ага.
Я слышал, джава и сишарп практически ничем не отличаются. Проникся тут идеей дженериков, поделился с коллегами, они заявили, что дженерики - полное говно. Оказалось, они про джавовские :grin:

pitrik2

Я слышал, джава и сишарп практически ничем не отличаются.
ну у них одно глобальное отличие о котором нельзя не слышать
а в остальном очень похожи

kruzer25

одно глобальное отличие
А именно?
а в остальном очень похожи
Дженерики, делегаты (да, делегаты в большинстве случаев - говно, но иногда они уместны LINQ...

pitrik2

А именно?
в джаве генерики используются только компилятором
в рантайме дженериков нет вообще
в сишарпе они есть в рантайме, т.е. этот вариант намного мощнее

kruzer25

И это, по-твоему - единственное отличие сишарпа от джавы?

pitrik2

странный вопрос
это настолько глобальное отличие, что об остальных даже речи не идет
Оставить комментарий
Имя или ник:
Комментарий: