Técnicas para reduzir a verbosidade do Java
- #Java
Alguns desenvolvedores podem se sentir sobrecarregados pela verbosidade intrínseca da linguagem. existem estratégias que podem ser empregadas para simplificar e tornar o código Java mais “limpo”, agradável e legível. Aqui trago cinco pequenas dicas para reduzir o boilerplate em aplicações Java
1. Uso de Expressões Lambda:
As expressões lambda, introduzidas no Java 8, oferecem uma maneira simples de expressar instâncias de interfaces funcionais. Em vez de criar classes anônimas extensas, as expressões lambda permitem escrever blocos de código mais compactos. Por exemplo, uma interface funcional que normalmente exigiria várias linhas de código pode ser expressa de forma mais sucinta usando uma expressão lambda.
// Antes do Java 8
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Olá, Mundo!");
}
};
// Com Expressão Lambda
Runnable runnable = () -> System.out.println("Olá, Mundo!");
2. Métodos de Referência:
Os métodos de referência são uma extensão das expressões lambda e oferecem uma maneira mais limpa de chamar métodos existentes. Isso reduz a redundância e torna o código mais enxuto.
// Antes do Java 8
list.forEach(item -> System.out.println(item));
// Com Método de Referência
list.forEach(System.out::println);
3. Tipos de Inferência:
O Java 10 introduziu aprimoramentos na inferência de tipos, permitindo que o compilador deduza automaticamente o tipo de uma variável com base no contexto. Isso reduz a necessidade de especificar tipos explicitamente, tornando o código mais conciso.
// Antes do Java 10
Map<String, List<String>> mapa = new HashMap<String, List<String>>();
// Com Inferência de Tipos
var mapa = new HashMap<String, List<String>>();
4. Streams e Collectors:
O uso de streams e collectors do Java permite manipular coleções de maneira mais eficiente e concisa. Operações como filtragem, mapeamento e coleta podem ser expressas em poucas linhas de código, substituindo estruturas tradicionais de loop.
// Uso de Stream e Collectors
List<String> colecaoFiltrada = lista.stream()
.filter(s -> s.length() > 5)
.collect(Collectors.toList());
5. Anotações Lombok:
O projeto Lombok oferece anotações que eliminam a necessidade de escrever métodos getters, setters e construtores, reduzindo consideravelmente a quantidade de código boilerplate.
// Sem Lombok
public class Exemplo {
private String nome;
private int idade;
public Exemplo(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
// Métodos getters e setters para 'idade'...
}
// Com Lombok
import lombok.Data;
@Data
public class Exemplo {
private String nome;
private int idade;
}
Conclusão:
Os desenvolvedores podem aproveitar as características mais recentes da linguagem e bibliotecas externas para simplificar seus projetos Java, mantendo a clareza e a eficiência do código. Essas técnicas não apenas tornam o código mais atraente, mas também contribuem para um desenvolvimento mais produtivo e agradável.
Github: https://github.com/igorpereirag