Boas Práticas e Clean Code em Java: Do Código Legado a uma Aplicação Profissional
Escrever um código que o computador entenda é simples. O verdadeiro desafio do desenvolvedor Java é escrever um código que outros seres humanos consigam ler, manter e evoluir sem dificuldades.
Com a constante evolução do ecossistema Java, aplicar princípios de Clean Code deixou de ser um diferencial e se tornou um requisito básico para a construção de sistemas robustos e escaláveis.
1. Nomes Significativos e Reveladores de Intenção
Evite abreviações confusas, variáveis de uma única letra ou nomes genéricos. O nome de uma classe, método ou variável deve dizer exatamente o que ela é ou faz.
- Evite:
- Java
int d; // dias passados
List<Account> list;
public void proc(Account a) { ... }
- Prefira:
- Java
int diasDesdeAUltimaModificacao;
List<Account> contasAtivas;
public void processarPagamento(Account conta) { ... }
2. Funções Pequenas e com Responsabilidade Única (SRP)
Métodos devem fazer apenas uma coisa, fazê-la bem e ser a única responsável por ela. Se o seu método tem mais de 15 a 20 linhas, utiliza muitos if/else aninhados ou faz leitura de banco de dados e envio de e-mail ao mesmo tempo, ele precisa ser refatorado.
- Antes (Código Poluído):
- Java
public void processarPedido(Pedido pedido) {
// Valida o pedido
if (pedido.getItens().isEmpty()) throw new IllegalArgumentException();
// Calcula total
double total = 0;
for (Item item : pedido.getItens()) {
total += item.getPreco();
}
pedido.setTotal(total);
// Salva no banco
repository.save(pedido);
// Envia e-mail
emailService.enviarConfirmacao(pedido);
}
- Depois (Clean Code):
- Java
public void processarPedido(Pedido pedido) {
validarPedido(pedido);
calcularTotalDoPedido(pedido);
pedidoRepository.save(pedido);
notificacaoService.enviarConfirmacao(pedido);
}
3. Tratamento Elegante de Exceções
Não use exceções genéricas (Exception) para fluxo de controle e nunca deixe blocos catch vazios. Crie exceções de domínio expressivas.
Java
// Em vez de lançar RuntimeException genérica
if (saldo < valorSaque) {
throw new SaldoInsuficienteException("Saldo atual de " + saldo + " é insuficiente para o saque de " + valorSaque);
}
4. Apague Comentários Desnecessários
Comentários não salvam um código ruim. Em vez de escrever um comentário explicando o que um bloco confuso faz, refatore o código para que ele seja autoexplicativo.
- Código ruim com comentário:
- Java
// Verifica se o cliente tem mais de 18 anos e é ativo
if (c.getAge() > 18 && c.getStatus() == 1) { ... }
- Código limpo:
- Java
if (cliente.isMaiorDeIdadeEAtivo()) { ... }
5. Aproveite os Recursos do Java Moderno
Utilize recursos modernos para reduzir boilerplate e aumentar a legibilidade do código:
Recordspara DTOs e classes imutáveis de dados.Optionalpara evitar o terrívelNullPointerException.Streams APIpara manipulação declarativa de coleções.
Java
// Código declarativo e limpo usando Streams e Optional
public Optional<Cliente> buscarClienteAtivoPorEmail(String email) {
return clientes.stream()
.filter(Cliente::isAtivo)
.filter(c -> c.getEmail().equalsIgnoreCase(email))
.findFirst();
}
Conclusão
Clean Code é um hábito diário. Escrever código limpo exige disciplina e prática contínua, mas reduz drasticamente os custos de manutenção e a ocorrência de bugs em produção.
Como diz a célebre regra dos escoteiros (Boy Scout Rule): "Deixe o código sempre mais limpo do que como você o encontrou."



