Java Efetivo
Book information
Description
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. 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
Similar books
Reisen im Ostindischen Archipel in den Jahren 1865 und 1866
1869 · PDF
Eine Reise um die Welt
1899 · PDF
Europäische Siedler in Niederländisch Ost-Indien
1892 · PDF
Über den Gebirgsbau der Insel Java
1844 · PDF
Der Malayische Archipel : Land und Leute, in Schilderungen gesammelt während eines dreißigjährigen Aufenthaltes in den Kolonien
1878 · PDF
Starting Out with Java: From Control Structures through Data Structures (4th Edition)
2018 · PDF
Spark в действии
2021 · PDF
Starting Out With Java: From Control Structures through Objects
2019 · PDF