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?
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.
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?