Java Efetivo

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

O Guia Definitivo das Melhores Práticas com Java ― Atualizado para o Java 7, 8 e 9 Desde a publicação anterior de Java Efetivo, após o lançamento da versão 6, o Java mudou radicalmente. Este clássico vencedor do prêmio Jolt foi todo atualizado para aproveitar ao máximo os recursos mais recentes da plataforma e de suas bibliotecas. A diversidade de paradigmas no Java moderno demanda recomendações específicas quanto às melhores práticas, e este livro as disponibiliza.Como nas edições anteriores, cada capítulo de Java Efetivo, Terceira Edição é composto de inúmeros “itens” apresentados como ensaios independentes e curtos quetrazem recomendações específicas, informações sobre as sutilezas da plataforma e exemplos de códigos atualizados.As descrições e explicações completas de cada item esclarecem o que fazer, o que não fazer e o porquê.Esta edição aborda os recursos e as bibliotecas do Java 7, 8 e 9, como as construções de programação funcional, adicionadas às raízes da programação orientada a objetos.Adicionou-se muitos itens novos também, incluindo um capítulo dedicado aos lambdas e às streams. A NOVA EDIÇÃO INCLUI• Interfaces funcionais, expressões lambdas,referências para método e streams• Métodos estáticos e padrões para interfaces• Inferência de tipo, incluindo o operador <> para os tipos genéricos• Anotação @SafeVarargs• Instruções try-with-resources• Recursos das bibliotecas novas, como a interface Optional , a java.time e a facilidade dos métodos de fabricação para as coleções Este livro foi elaborado para ajudá-lo a utilizar de modo efetivo a linguagem e as bibliotecas de programação Java: java.lang, java.util e java.io, e os subpacotesJava, tais como, o java.util.concurrent e o java.util.function. Outras bibliotecas são discutidas eventualmente.Esta obra é composta de 90 Itens, e cada um deles aborda o conhecimento de uma regra. Geralmente, as regras descrevem as práticas consideradas produtivaspelos melhores e mais experientes programadores. Os Itens são agrupados em 11 capítulos, cada qual abrange um aspecto amplo da arquitetura de software. A finalidade da obra não é ser lida do princípio ao fim: cada Item é mais ou menos independente. Os Itens estão amplamente correlacionados; desse modo, você pode facilmente trilhar o próprio caminho através das páginas.Introduziram-se muitos recursos à plataforma desde a publicação da última edição deste livro. A maioria dos Itens desta obra usa de alguma forma essas funcionalidades. A tabela a seguir lhe mostra onde encontrar as principais funcionalidades elencadas: Funcionalidade Itens VersãoLambdas Itens 42–44 Java 8Streams Itens 45–48 Java 8Opcionais Item 55 Java 8Métodos padrões nas interfaces Item 21 Java 8try-with-resources Item 9 Java 7@SafeVarargs Item 32 Java 7Modules Item 15 Java 9.

Author(s): Joshua Bloch
Edition: 3
Publisher: Alta Books
Year: 2019

Language: Portuguese
Tags: Java

Apresentação
Prefácio
Agradecimentos
Introdução
Criar e Destruir Objetos
Item 1: Considere os métodos static factory em vez dos construtores
Item 2: Cogite o uso de um builder quando se deparar com muitos parâmetros no construtor
Item 3: Implemente a propriedade de um singleton com um construtor privado ou um tipo enum
Item 4: Implemente a não instanciação através de construtores privados
Item 5: Dê preferência à injeção de dependência para integrar recursos
Item 6: Evite a criação de objetos desnecessários
Item 7: Elimine referências obsoletas de objetos
Item 8: Evite o uso dos finalizadores e dos cleaners
Item 9: Prefira o uso do try-with-resources ao try-finally
Métodos Comuns para Todos os Objetos
Item 10: Obedeça ao contrato geral ao sobrescrever o equals
Item 11: Sobrescreva sempre o método hashCode ao sobrescrever o método equals
Item 12: Sobrescreva sempre o toString
Item 13: Sobrescreva o clone de modo sensato
Item 14: Pense na possibilidade de implementar a Comparable
Classes e Interfaces
Item 15: Reduza ao mínimo a acessibilidade das classes e de seus membros
Item 16: Use os métodos getters em classes públicas e não os campos públicos
Item 17: Reduza a mutabilidade das classes ao mínimo
Item 18: Prefira a composição à herança
Item 19: Projete e documente as classes para a herança ou a iniba
Item 20: Prefira as interfaces em vez das classes abstratas
Item 21: Projete as interfaces para a posteridade
Item 22: Use as interfaces somente para definir tipos
Item 23: Dê preferência às hierarquias de classes em vez das classes tagged
Item 24: Prefira as classes membro estáticas às não estáticas
Item 25: Limite os arquivos fonte a uma única classe de nível superior
Genéricos
Item 26: Não use tipos brutos
Item 27: Elimine as advertências não verificadas
Item 28: Prefira as listas aos arrays
Item 29: Priorize os tipos genéricos
Item 30: Priorize os métodos genéricos
Item 31: Use os wildcards limitados para aumentar a flexibilidade da API
Item 32: Seja criterioso ao combinar os genéricos com os varargs
Item 33: Pense na possibilidade de usar contêineres heterogêneos typesafe
Enums e Anotações
Item 34: Use enums em vez de constantes int
Item 35: Use os campos de instância em vez dos valores ordinais
Item 36: Use a classe EnumSet em vez dos campos de bits
Item 37: Use EnumMap em vez da indexação ordinal
Item 38: Emule enums extensíveis por meio de interfaces
Item 39: Prefira as anotações aos padrões de nomenclatura
Item 40: Use a anotação Override com frequência
Item 41: Use as interfaces marcadoras para definir tipos
Lambdas e Streams
Item 42: Prefira os lambdas às classes anônimas
Item 43: Dê preferência às referências para métodos em vez dos lambdas
Item 44: Prefira o uso das interfaces funcionais padrão
Item 45: Seja criterioso ao utilizar as streams
Item 46: Dê preferência às funções sem efeitos colaterais nas streams
Item 47: Dê preferência à Collection como um tipo de retorno em vez da Stream
Item 48: Tenha cuidado ao fazer streams paralelas
Métodos
Item 49: Verifique a validade dos parâmetros
Item 50: Faça cópias defensivas quando necessário
Item 51: Projete as assinaturas de método com cuidado
Item 52: Utilize a sobrecarga com critério
Item 53: Use os varargs com sabedoria
Item 54: Retorne coleções ou arrays vazios, em vez de nulos
Item 55: Seja criterioso ao retornar opcionais
Item 56: Escreva comentários de documentação para todos os elementos da API exposta
Programação Geral
Item 57: Minimize o escopo das variáveis locais
Item 58: Dê preferência aos loops for-each em vez dos tradicionais loops for
Item 59: Conheça e utilize as bibliotecas
Item 60: Evite o float e o double caso sejam necessárias respostas exatas
Item 61: Dê preferência aos tipos primitivos em vez dos tipos primitivos empacotados
Item 62: Evite as strings onde outros tipos forem mais adequados
Item 63: Cuidado com o desempenho da concatenação de strings
Item 64: Referencie os objetos através das interfaces deles
Item 65: Dê preferência às interfaces em vez da reflexão
Item 66: Utilize os métodos nativos com sabedoria
Item 67: Seja criterioso ao otimizar
Item 68: Adote as convenções de nomenclatura geralmente aceitas
Exceções
Item 69: Utilize as exceções somente em circunstâncias excepcionais
Item 70: Utilize as exceções verificadas para condições recuperáveis e exceções de runtime para erros de programação
Item 71: Evite o uso desnecessário das exceções verificadas
Item 72: Priorize o uso das exceções padrões
Item 73: Lance exceções adequadas para a abstração
Item 74: Documente todas as exceções lançadas por cada método
Item 75: Inclua as informações a respeito das capturas de falhas nos detalhes da mensagem
Item 76: Empenhe-se para obter a atomicidade de falha
Item 77: Não ignore as exceções
Concorrência
Item 78: Sincronize o acesso aos dados mutáveis compartilhados
Item 79: Evite a sincronização excessiva
Item 80: Dê preferência aos executores, às tarefas e às streams em vez das threads
Item 81: Prefira os utilitários de concorrência ao wait e ao notify
Item 82: Documente a thread safety
Item 83: Utilize a inicialização preguiçosa com parcimônia
Item 84: Não dependa do agendador de threads
Serialização
Item 85: Prefira alternativas à serialização Java
Item 86: Tenha cautela ao implementar a Serializable
Item 87: Pense na possibilidade de usar uma forma serializada customizada
Item 88: Escreva métodos readObject defensivamente
Item 89: Dê preferência aos tipos enum em vez do readResolve para controle de instância
Item 90: Pense em usar proxies de serialização em vez de instâncias serializadas
Itens Correspondentes aos Itens da Segunda Edição
Referências