Pull to refresh

Comments 24

За перевод конечно спасибо, но выигрыш при использовании LambdaJ невелик.

Во первых надо себя переучивать думать их категориями (глаз набит на стандартные шаблонны циклов с ифами). Но тут конечно можно старперов лесом отправить.

Во вторых большинство кода уже написано без LambdaJ (помнить два способа обработки расточительно, а поддерживать-переписывать утомительно). Хотя тут все можно отрефакторить (красота в коде это красиво).

В третьих некоторые вещи (оптимально написанный код, который действительно нужен) сделать на LambdaJ — это немного оверхед (конструкция по сложности будет впечатлять не меньше циклов с ифами).

В четвертых отладка станет немного адом, хотя тут очень сильно зависит от специфики кода и программиста.

Плюс к тому производительность, как вы уже упоминали, да и исходный код у LambdaJ не очень…
UFO landed and left these words here
Не лень когда проект на 1к строк, а когда на 10к, не говоря уже о 100к, то действительно несколько «лениво».
Или предлагаете саппортить код в одном стиле, а писать новый в другом?
Не назвал бы это удачным решением.
UFO landed and left these words here
UFO landed and left these words here
Не всегда повышает, увы.
В частности, если ты не знаешь конкретно LambdaJ (хотя и используешь функциональный подход с использованием, допустим, Google Collections), то сходу прочитать, что будет делать тот или иной участок кода, довольно сложно.
Ну собственно автор комментария написал все что я хотел написать и поэтому не вижу причин почему я должен писать еще один комментарий.
> int age = min(forEach(select(sales, having(
> on(Sale.class).getCost(), greaterThan(50000.00)).getBuyer()))),
> on(Person.class).getAge());

А ещё говорят в лиспах слишком много скобок.
Когда увидел первый пример тоже сразу подумал про Lisp :)
ИМХО, как-то нечитабельно…
sprunge.us/PNdM?cl

Главное — в лиспах не нужно считать скобки, из-за древовидного кода.

Вообще, в языках с замыканиями и функциями первого класса намного проще, понятнее и меньше скобок. Соглашусь с тов. vansickle и посоветую посмотреть Scala.
LambdaJ пример ужасен в плане читабельности. Я б это с LINQ не сравнивал.
Без поддержки лямбд самим языком синтаксис смотрится конечно не вполне красиво, лучше уж переходить на Scala если есть желание пользоваться элементами ФП.
Не так лямбды нужны, как.нет-овские expression'ы — именно из-за них.нетовский LINQ есть такой, какой он есть. Чтоб написав «x => x>5» была возможность именно провайдеру проанализировать что от него хотят и построить или SQL-запрос соответствующий или URL или просто перебрать элементы.
Капец. За неделю вторая статья в которой для джавы имплементят «LINQ». И ессно что никаким LINQ и не пахнет. Пахнет обычным флуент интерфейсом.
Ты меня опередил с комментом :)
Полностью поддерживаю.
Ну вообщем-то да. Просто хочется иметь LINQ в Java, а не в Scala… а его нет, вот и приходится смотреть в сторону всяких сомнительных решений :(
Похоже на какой-то костыль. Хочешь ФП — используй Scala. В таком виде я почему-то не вижу преимещуств.
Только мне итеративный вариант кажется читабельнее?
Нет, не только вам. Но лямбда — это же так модно.
Лямбда — это не только модно, но и удобно. Снова обращаю внимание на habrahabr.ru/blogs/java/118041/#comment_3845512

Проблема в том что в LambdaJ нет никаких лямбд, только сложный способ делать просте вещи.
Уф… Боюсь, какое-то сомнительное удовольствие — использование этой библиотеки. Что ж, будем ждать Java 8. Там обещали настоящее лямбда-счисление.
Sign up to leave a comment.

Articles