2
respostas

[Dúvida] Legibilidade

Boa tarde.

Acho engraçado esse conceito de legibilidade, para mim, não é porque esta tudo em uma linha só que o código esta mais legível. No exemplo que foi dado, onde se troca o código abaixo:

for(Integer i: lista) {
  if(i % 2 == 0) {
    System.out.println(i);
  }
}

por este:

lista.stream().filter(i -> i % 2 == 0).forEach(System.out::println);

Se torna um código bem mais complexo, exigindo mais conhecimento sobre a lingagem. Já o código inicial, até mesmo um programador iniciante em java consegue entender.

E mesmo estando tudo em uma linha, é preciso digitar mais do que no código inicial, 68 caracteres contra 63.

Fico pensando quando for necessário debugar, tratar excecões e dar manutenção quando se deparar com várias fuções lambda aninhadas.

Uso sempre o princípio KISS.

Mas é só uma opinião/pensamento.

2 respostas

Olá, Carlos! Como vai?

O conceito de legibilidade pode variar de pessoa para pessoa, e o que pode parecer mais legível para um, pode não ser para outro. Isso depende muito do nível de familiaridade com a linguagem e os conceitos utilizados.

As funções lambda, assim como outros recursos avançados de várias linguagens, surgem como uma alternativa para tornar o código mais conciso e, para alguns, mais legível. No entanto, como você mencionou, elas podem tornar o código mais complexo para aqueles que não estão familiarizados com o conceito.

No exemplo que você mencionou, a versão com a função lambda pode parecer mais complexa à primeira vista, mas ela tem a vantagem de ser mais declarativa. Ou seja, ela descreve o que queremos fazer (filtrar os números pares da lista e imprimi-los) sem se preocupar com os detalhes de como isso é feito (como inicializar um loop, verificar a condição, etc).

No entanto, você está absolutamente correto em dizer que a simplicidade é uma virtude no desenvolvimento de software. O princípio KISS (Keep It Simple, Stupid) é um bom guia a seguir. Se um código mais simples e direto é mais adequado para o seu caso, não há nada de errado em usá-lo.

Em relação ao debugging e ao tratamento de exceções, é verdade que as funções lambda podem complicar um pouco essas tarefas. No entanto, muitas IDEs modernas têm ferramentas que ajudam a lidar com isso.

Em resumo, as funções lambda são apenas mais uma ferramenta à disposição dos desenvolvedores Java. Elas podem ser muito úteis em algumas situações, mas não são a resposta para tudo. Como sempre, o melhor é usar o bom senso e escolher a ferramenta mais adequada para cada situação.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!

Obrigado Sarah.

Você tb esta certa, com o tempo me acostumo com o lambda. É uma evolução da lingagem, inevitável, porque sempre vai haver um jeito melhor, ou mais conciso de fazer as coisas.

Tks a lot.