[MJ55] - Chegando ao Lambda no Java 8

Oi,

Ao ler o artigo fiquei com algumas duvidas, principalmente após ler a declaração do Geraldo Ferraz.

Será mesmo que utilizando Guava ou Lambda conseguimos melhorar a legibilidade e expressividade do software?

Utilizando o Java Nativo, para filtrar todos os usuarios do Guj que fizeram mais de 500 post:

for (Palestrante p : palestrante) { if (p.getPostsNoGuj() > 500) }

Utilizando Guava:

System.out.print(FluentIterable.from(palestrantes).filter( new Predicate<Palestrante>(){ public boolean apply(Palestrante palestrantes) { return palestrante.getPostsNoGuj() > 500; }}));

Utilizando Lambda:

palestrante.filter(p -> p.getPostsNoGuj() > 500);

Sinceramente? Ainda prefiro muito o foreach nativo. Outro ponto fraco, na minha opinião, é a dependencia de uma biblioteca extErna. E se o projeto for descontinuado?

Como foi exposto nas consideracoes finais do artigo: Será que essas novas bibliotecas nao serao uma barreira grande para novos programadores da equipe? Na minha opinião sim. E na de vcs?

Tchauzin

Também prefiro o foreach.

Java está incorporando um conceito que outras linguagens mainstream já incorporaram há muito tempo. Usar isso não deveria ser uma barreira para os programadores, pois não é exatamente uma novidade. É por isso que devemos sempre manter a mente aberta e procurar expandir a prática além do Java.

Quando generics foi introduzido na linguagem - e não era exatamente uma coisa nova - muitos também torceram o nariz; hoje nem podemos imaginar como Java existia sem isso. Se todos mantivessem essa postura, ainda estaríamos usando a primeira versão da linguagem, ou pior, ainda estaríamos usando a primeira versão do EJB.

Não conheço o Guava, portanto não vou opinar a respeito.

Mas para mim a diferença com lambda é notável. E para melhor.

Isso porque no seu exemplo, você não adicionou as chaves do if no for simples, nem a variavel de lista que estava sendo preenchida, com os respectivos adds.
No exemplo de lambda seria apenas declarar uma variável para receber o resultado da expressão… muito mais simples.

Estou trabalhando num projeto .Net agora e posso afirmar por experiência.
Isso vira parte do seu dia a dia e facilita muito algumas tarefas.

Logo logo, como disse o tnaires, você não sabe mais como conseguia programar sem isso.

Oi,

Não curti muito essa “nova” maneira de programar. Deve ser pq sou um pouco “velha guarda”. Não uso o import static e sem ele, os códigos do Guava e Lambda ficam enormes.

Gostaria de saber a questão da velocidade em processamento. Muda alguma coisa?

Tchauzin!

Eu fiz uns testes com o LambdaJ, e em todos o processamento com o foreach era mais rápido.

Mas não chega a ser algo preocupante, e pela legibilidade do código, eu acho que vale a pena.

Só que enquanto for uma dependência externa, eu fico com o pé atrás também.