Item 59: Conheça e utilize as bibliotecas
Java Efetivo (livro)
Posted on October 3, 2024
Evite reinventar a roda:
Ao enfrentar problemas comuns, é tentador escrever soluções ad hoc, mas as bibliotecas oferecem implementações otimizadas, testadas e confiáveis.
Exemplo:
// Gerando um número aleatório (solução ad hoc com problemas)
static int random(int n) {
return Math.abs(rnd.nextInt()) % n;
}
Problemas com essa abordagem incluem:
- Padrões repetitivos se n for uma potência de dois.
- Distribuição desigual se n não for potência de dois.
- Risco de erro com Math.abs(Integer.MIN_VALUE).
- Solução melhor: Use Random.nextInt(int) para gerar números aleatórios de maneira eficiente e correta.
Random rnd = new Random();
int randomNum = rnd.nextInt(n); // Correto e seguro
Use o ThreadLocalRandom:
A partir do Java 7, ThreadLocalRandom é mais rápido e deve ser preferido ao Random em muitos casos:
int randomNum = ThreadLocalRandom.current().nextInt(n); // 3.6x mais rápido que Random
Vantagens de usar bibliotecas padrão:
- Especialização: Os métodos das bibliotecas são criados por especialistas, testados amplamente e melhorados ao longo do tempo.
- Eficiência de tempo: Você pode focar no desenvolvimento da sua aplicação ao invés de escrever infraestruturas de suporte.
- Desempenho melhorado: Bibliotecas padrão são continuamente otimizadas.
- Funcionalidades adicionais: Ao longo do tempo, as bibliotecas ganham novas funcionalidades. Exemplo: O método transferTo foi adicionado no Java 9 para facilitar o envio de dados de streams.
// Exemplo de uso do método transferTo para transferir dados de um InputStream para um OutputStream
try (InputStream in = url.openStream();
OutputStream out = new FileOutputStream("output.txt")) {
in.transferTo(out); // Simples e eficiente
}
Bibliotecas comuns a serem conhecidas:
Familiarize-se com as bibliotecas centrais, como java.lang, java.util, java.io, e seus subpacotes.
Conheça o framework de coleções e a biblioteca de streams, além dos utilitários de concorrência em java.util.concurrent.
Quando não usar bibliotecas:
- Em alguns casos, suas necessidades podem ser especializadas e não atendidas pelas bibliotecas padrão. Nesses casos, procure bibliotecas de terceiros, como o Guava do Google, ou escreva sua própria implementação se necessário.
Conclusão:
- Resuma sempre com uma consulta: Ao precisar de uma funcionalidade, verifique se uma biblioteca já fornece o que você precisa antes de reinventar soluções.
💖 💪 🙅 🚩
Java Efetivo (livro)
Posted on October 3, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
career Burnout, Imposter Syndrome & More: What Junior Devs Really Experience 🕵️♀️
November 28, 2024