O documento discute boas práticas para desenvolvimento Java, como equals, hashCode e toString, imutabilidade, métodos, primitivos, exceções e enums. Aborda tópicos como sobrescrever corretamente equals e hashCode, criar classes imutáveis, projetar assinaturas de métodos, tratar exceções e usar enums no lugar de constantes.
Automação de testes de API utilizando PostmanLucas Amaral
O documento apresenta conceitos iniciais sobre testes de API e automação de testes com Postman. Ele discute APIs, REST, requests e respostas HTTP, e como criar e rodar testes no Postman usando asserções e bibliotecas como Chai. O documento também fornece links para recursos adicionais sobre o tópico.
Alguns conceitos para começar a testar APIs REST. Precisamos saber alguns conceitos básicos e depois podemos começar a testar. De forma bem resumida o que são os métodos HTTP, o que é URL e URI, como fazer uma requisição no Postman e os principais códigos de status HTTP!
Alguns links e materiais indicados para quem quer iniciar nesse mundo de testes em API foram disponibilizados.
[QANinjaConf2017] Testes de Regressão Visual com Galen FrameworkJúlio de Lima
O documento discute testes de regressão visual, introduzindo o framework Galen. Descreve como o Galen pode ser usado para validar posicionamento, tamanhos, textos e outros aspectos visuais de páginas web. Fornece exemplos de comandos e especificações que podem ser usados.
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
O documento discute testes de software e desenvolvimento orientado a testes (TDD). Ele apresenta os principais tópicos: 1) razões para testar software e automatizar testes; 2) tipos de testes como unitários e de integração; 3) os princípios e benefícios do TDD; 4) um exemplo prático de implementação de testes unitários usando TDD.
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
O documento fornece instruções passo-a-passo para criar projetos, suites de teste, casos de teste e etapas de teste no SoapUI. Ele explica como criar um projeto SoapUI, adicionar uma suíte de teste e um caso de teste, configurar etapas de teste como solicitações SOAP e transferências de propriedades, e executar testes.
Automação de testes de API utilizando PostmanLucas Amaral
O documento apresenta conceitos iniciais sobre testes de API e automação de testes com Postman. Ele discute APIs, REST, requests e respostas HTTP, e como criar e rodar testes no Postman usando asserções e bibliotecas como Chai. O documento também fornece links para recursos adicionais sobre o tópico.
Alguns conceitos para começar a testar APIs REST. Precisamos saber alguns conceitos básicos e depois podemos começar a testar. De forma bem resumida o que são os métodos HTTP, o que é URL e URI, como fazer uma requisição no Postman e os principais códigos de status HTTP!
Alguns links e materiais indicados para quem quer iniciar nesse mundo de testes em API foram disponibilizados.
[QANinjaConf2017] Testes de Regressão Visual com Galen FrameworkJúlio de Lima
O documento discute testes de regressão visual, introduzindo o framework Galen. Descreve como o Galen pode ser usado para validar posicionamento, tamanhos, textos e outros aspectos visuais de páginas web. Fornece exemplos de comandos e especificações que podem ser usados.
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
O documento discute testes de software e desenvolvimento orientado a testes (TDD). Ele apresenta os principais tópicos: 1) razões para testar software e automatizar testes; 2) tipos de testes como unitários e de integração; 3) os princípios e benefícios do TDD; 4) um exemplo prático de implementação de testes unitários usando TDD.
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
O documento fornece instruções passo-a-passo para criar projetos, suites de teste, casos de teste e etapas de teste no SoapUI. Ele explica como criar um projeto SoapUI, adicionar uma suíte de teste e um caso de teste, configurar etapas de teste como solicitações SOAP e transferências de propriedades, e executar testes.
O documento discute a importância de testes automatizados para sustentar Continuous Delivery e DevOps. Ele explica os benefícios de testes automatizados, como feedback rápido e menos erros, e discute vários tipos de testes como testes unitários, de serviço, funcionais e de desempenho. Também fornece exemplos de ferramentas para cada tipo de teste.
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
A importância de testes de software já deveriam ser um consenso entre times de desenvolvimento. Contudo ainda há profissionais que não compreendem o valor deles, um dos motivos é que de fato muitos softwares possuem testes mas continuam a apresentar bugs a cada entrega. Isso ocorre porque é comum os testes garantirem o funcionamento do código, mas não das funcionalidades como um todo. Na apresentação será abordado como equilibrar testes unitários, de componentes e de integração organizando-os através de uma visão mais direcionada ao negócio, features e histórias do que apenas ao código implementado.
This is the presentation I'll make in JUG Valle about Android Testing. It's in Brazilian portuguese.
Essa é a apresentação que eu estarei apresentando sobre Testes em Android na JUG Valle este final de semana.
O documento descreve o desenvolvimento guiado por testes (Test-Driven Development - TDD), incluindo suas regras fundamentais, etapas, tipos de testes, demonstração de um exemplo e conclusões sobre os benefícios do TDD.
O documento discute o papel do QA na transformação ágil, identificando anti-patters como realizar testes em fases separadas e focar em testes manuais. Propõe que QA trabalhe em conjunto com outros papéis desde o início, com teste automático, feedback rápido e treinamento para apoiar a transformação.
O documento apresenta uma palestra sobre Desenvolvimento Dirigido por Testes (TDD). A palestra discute o que é TDD, como funciona, frameworks de teste de unidade, mitos sobre TDD e exemplos práticos em .NET e Java. O palestrante tem mais de cinco anos de experiência em engenharia de software e é instrutor de teste de software.
Apresentação sobre temas abordado no livro Clean Code de Robert C. Martim.
Os benefícios sobre manter seu código limpo. Quais prejuízos um código sujo pode trazer para sua empresa.
Como se expressar no seu código dispensando o uso de inúmeros comentários que poluem o código.
O documento discute problemas comuns na automação de testes de má qualidade e como evitá-los. Apresenta técnicas para melhorar a estimativa, automação de testes funcionais e de performance. Introduz a técnica HVTA para aumentar a quantidade de casos de teste automatizados de forma aleatória e independente.
O documento discute problemas comuns na automação de testes de má qualidade e como evitá-los. Apresenta técnicas para melhorar a estimativa, automação de testes funcionais e de performance. Propõe a técnica HVTA para aumentar a quantidade de casos de teste automatizados de forma aleatória e independente dos scripts.
O documento discute problemas comuns na automação de testes de má qualidade e como evitá-los. Apresenta técnicas para melhorar a estimativa, automação de testes funcionais e de performance. Introduz a técnica HVTA para aumentar a quantidade de casos de teste automatizados de forma aleatória e independente.
Este documento fornece instruções e modelos para a apresentação semanal de lições aprendidas por uma equipe participante do programa Summer of Startups. Inclui slides sobre membros da equipe, ideia de negócios, hipóteses testadas, tarefas realizadas e próximos passos. O objetivo é compartilhar progresso e lições aprendidas com outros participantes do programa.
Workshop - Plano de Testes End to End com o Microsoft Test ManagerAlan Carlos
1) O documento discute planos de testes end-to-end com o Microsoft Test Manager, incluindo a criação de casos de testes funcionais, não funcionais e exploratórios.
2) Instruções detalhadas são fornecidas sobre como criar e gerenciar planos de testes, suítes de testes, casos de testes e bugs no Test Manager.
3) A gestão do laboratório de testes é abordada, incluindo a criação rápida de ambientes usando o AppController e a integração dos testes com o Laboratório
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Renato Groff
Apresentação sobre o uso de mocks, stubs e objetos fakes na implementação de testes de software. Palestra realizada em 20/07/2017, em meetup promovido pelo grupo Developers-SP na cidade de São Paulo-SP.
O documento apresenta uma disciplina sobre automatização de testes. Ele discute os problemas do processo de teste manual, ferramentas de teste como TestLink e Mantis, e como migrar casos de teste de um processo manual para essas ferramentas.
Kanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficientethiagodacosta
O documento descreve o método Kanban como um método de gestão de mudanças evolucionário que utiliza um sistema puxado para expor problemas e gerar melhorias incrementais no fluxo de trabalho de forma transparente e engajada. O Kanban usa métricas como WIP, throughput e lead time para medir e gerenciar o fluxo de trabalho de forma a reduzir o lead time de forma evolutiva.
O documento apresenta os conceitos e objetivos do desenvolvimento orientado a testes (TDD). O TDD é uma metodologia que propõe escrever testes unitários antes de implementar o código, seguindo os passos vermelho-verde-refatoração. O documento explica os benefícios do TDD, como código de melhor qualidade e facilidade de refatoração.
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
O documento discute a importância dos testes automatizados para entrega contínua e DevOps. Ele explica diferentes tipos de testes como testes unitários, de serviço e de interface do usuário e ferramentas para cada um. Também aborda tópicos como pirâmide de testes, antipadrões, cobertura de código e testes de mutação.
O documento discute como começar uma carreira em tecnologia, abordando tópicos como estereótipos e mitos, a importância de soft skills, fontes de oportunidades e vagas, além de conselhos sobre consistência e qualidade de vida. A palestrante Paula Santana compartilha sua experiência para inspirar quem deseja ingressar na área.
Desvendando a arquitetura orientada a eventosPaula Santana
This document discusses payment and receipt methods for a bank. It provides 4 hyperlinks related to making payments and 3 hyperlinks related to receiving payments. The hyperlinks likely contain additional information about the different payment and receipt options available through the bank.
Mais conteúdo relacionado
Semelhante a Boas Práticas para desenvolvimento java que nunca saíram de moda
O documento discute a importância de testes automatizados para sustentar Continuous Delivery e DevOps. Ele explica os benefícios de testes automatizados, como feedback rápido e menos erros, e discute vários tipos de testes como testes unitários, de serviço, funcionais e de desempenho. Também fornece exemplos de ferramentas para cada tipo de teste.
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
A importância de testes de software já deveriam ser um consenso entre times de desenvolvimento. Contudo ainda há profissionais que não compreendem o valor deles, um dos motivos é que de fato muitos softwares possuem testes mas continuam a apresentar bugs a cada entrega. Isso ocorre porque é comum os testes garantirem o funcionamento do código, mas não das funcionalidades como um todo. Na apresentação será abordado como equilibrar testes unitários, de componentes e de integração organizando-os através de uma visão mais direcionada ao negócio, features e histórias do que apenas ao código implementado.
This is the presentation I'll make in JUG Valle about Android Testing. It's in Brazilian portuguese.
Essa é a apresentação que eu estarei apresentando sobre Testes em Android na JUG Valle este final de semana.
O documento descreve o desenvolvimento guiado por testes (Test-Driven Development - TDD), incluindo suas regras fundamentais, etapas, tipos de testes, demonstração de um exemplo e conclusões sobre os benefícios do TDD.
O documento discute o papel do QA na transformação ágil, identificando anti-patters como realizar testes em fases separadas e focar em testes manuais. Propõe que QA trabalhe em conjunto com outros papéis desde o início, com teste automático, feedback rápido e treinamento para apoiar a transformação.
O documento apresenta uma palestra sobre Desenvolvimento Dirigido por Testes (TDD). A palestra discute o que é TDD, como funciona, frameworks de teste de unidade, mitos sobre TDD e exemplos práticos em .NET e Java. O palestrante tem mais de cinco anos de experiência em engenharia de software e é instrutor de teste de software.
Apresentação sobre temas abordado no livro Clean Code de Robert C. Martim.
Os benefícios sobre manter seu código limpo. Quais prejuízos um código sujo pode trazer para sua empresa.
Como se expressar no seu código dispensando o uso de inúmeros comentários que poluem o código.
O documento discute problemas comuns na automação de testes de má qualidade e como evitá-los. Apresenta técnicas para melhorar a estimativa, automação de testes funcionais e de performance. Introduz a técnica HVTA para aumentar a quantidade de casos de teste automatizados de forma aleatória e independente.
O documento discute problemas comuns na automação de testes de má qualidade e como evitá-los. Apresenta técnicas para melhorar a estimativa, automação de testes funcionais e de performance. Propõe a técnica HVTA para aumentar a quantidade de casos de teste automatizados de forma aleatória e independente dos scripts.
O documento discute problemas comuns na automação de testes de má qualidade e como evitá-los. Apresenta técnicas para melhorar a estimativa, automação de testes funcionais e de performance. Introduz a técnica HVTA para aumentar a quantidade de casos de teste automatizados de forma aleatória e independente.
Este documento fornece instruções e modelos para a apresentação semanal de lições aprendidas por uma equipe participante do programa Summer of Startups. Inclui slides sobre membros da equipe, ideia de negócios, hipóteses testadas, tarefas realizadas e próximos passos. O objetivo é compartilhar progresso e lições aprendidas com outros participantes do programa.
Workshop - Plano de Testes End to End com o Microsoft Test ManagerAlan Carlos
1) O documento discute planos de testes end-to-end com o Microsoft Test Manager, incluindo a criação de casos de testes funcionais, não funcionais e exploratórios.
2) Instruções detalhadas são fornecidas sobre como criar e gerenciar planos de testes, suítes de testes, casos de testes e bugs no Test Manager.
3) A gestão do laboratório de testes é abordada, incluindo a criação rápida de ambientes usando o AppController e a integração dos testes com o Laboratório
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Renato Groff
Apresentação sobre o uso de mocks, stubs e objetos fakes na implementação de testes de software. Palestra realizada em 20/07/2017, em meetup promovido pelo grupo Developers-SP na cidade de São Paulo-SP.
O documento apresenta uma disciplina sobre automatização de testes. Ele discute os problemas do processo de teste manual, ferramentas de teste como TestLink e Mantis, e como migrar casos de teste de um processo manual para essas ferramentas.
Kanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficientethiagodacosta
O documento descreve o método Kanban como um método de gestão de mudanças evolucionário que utiliza um sistema puxado para expor problemas e gerar melhorias incrementais no fluxo de trabalho de forma transparente e engajada. O Kanban usa métricas como WIP, throughput e lead time para medir e gerenciar o fluxo de trabalho de forma a reduzir o lead time de forma evolutiva.
O documento apresenta os conceitos e objetivos do desenvolvimento orientado a testes (TDD). O TDD é uma metodologia que propõe escrever testes unitários antes de implementar o código, seguindo os passos vermelho-verde-refatoração. O documento explica os benefícios do TDD, como código de melhor qualidade e facilidade de refatoração.
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
O documento discute a importância dos testes automatizados para entrega contínua e DevOps. Ele explica diferentes tipos de testes como testes unitários, de serviço e de interface do usuário e ferramentas para cada um. Também aborda tópicos como pirâmide de testes, antipadrões, cobertura de código e testes de mutação.
Semelhante a Boas Práticas para desenvolvimento java que nunca saíram de moda (20)
O documento discute como começar uma carreira em tecnologia, abordando tópicos como estereótipos e mitos, a importância de soft skills, fontes de oportunidades e vagas, além de conselhos sobre consistência e qualidade de vida. A palestrante Paula Santana compartilha sua experiência para inspirar quem deseja ingressar na área.
Desvendando a arquitetura orientada a eventosPaula Santana
This document discusses payment and receipt methods for a bank. It provides 4 hyperlinks related to making payments and 3 hyperlinks related to receiving payments. The hyperlinks likely contain additional information about the different payment and receipt options available through the bank.
Clean code com features do java 8 a java 14Paula Santana
Clean code é sobre melhores práticas de programação como código limpo, legível e manutenível. O documento apresenta novas features do Java 8 ao Java 14 que ajudam a produzir código limpo, incluindo métodos default e estáticos em interfaces, lambdas, streams, Java Time API, enums, Optionals e registros.
O documento discute os desafios enfrentados por aqueles que estão começando na área de tecnologia, incluindo a necessidade constante de aprendizado, mudanças rápidas no mercado e falta de experiência requerida para empregos de entrada. É enfatizado que comunidades de tecnologia, cursos online e conferências podem ajudar na sobrevivência nesse ambiente dinâmico.
O documento discute os benefícios da refatoração de código, incluindo tornar o código mais legível e de fácil manutenção, facilitar a adição de novas funcionalidades e correção de bugs. A refatoração envolve reestruturar o código sem alterar seu comportamento externo para melhorar o design, organização e testabilidade. Algumas técnicas comuns de refatoração são descritas como extrair função, extrair variável e funções inline.
Desenvolvimento com arquitetura baseada em eventosPaula Santana
O documento discute arquitetura baseada em eventos, onde sistemas reativos usam mensagens assíncronas para estabelecer fronteiras entre componentes e garantir baixo acoplamento. A passagem de eventos permite que sistemas sejam responsivos, resilientes, elásticos e orientados a mensagens. O documento também discute desafios como concorrência e garantia de entrega, além de sugerir materiais para estudar sobre serialização, retries e implementação de produtores e consumidores.
Como fazer um bom desgn de c[odigo em javaPaula Santana
O documento fornece 12 fatores para um bom design de código em Java, incluindo: 1) o porquê do design, 2) boas práticas de orientação a objetos, 3) uso efetivo de métodos, 4) divisão adequada de camadas, e 5) testes de qualidade. O documento enfatiza a importância de um código limpo, legível e fácil de manter através do uso correto de padrões, práticas e ferramentas de desenvolvimento.
Este documento apresenta uma agenda para um workshop sobre Git para iniciantes, abordando conceitos como versionamento de arquivos, histórico de sistemas de versionamento, repositórios remotos, instalação do Git, criação de repositórios locais e remotos, entendimento de branches e merges.
Facilitando a implementação de mensageria em aplicações JavaPaula Santana
A apresentação discute mensageria em aplicações Java, como o JMS resolve problemas de comunicação entre aplicações, e implementações do JMS e Spring Framework. O Spring permite enviar mensagens de forma simples usando templates com qualquer sistema de mensagens como JMS, RabbitMQ ou eventos internos.
O documento apresenta GraphQL, definindo-o como uma linguagem de consulta para APIs que atende consultas com dados existentes. Explora os problemas do REST como under-fetching, over-fetching e falta de independência entre front-end e back-end. Apresenta pontos importantes como ter um único endpoint, tipos, queries e mutações. Discutem implementação em Java e pontos de atenção como cache e limitações de recursos.
O documento discute arquitetura orientada a eventos para sistemas complexos e gigantes na internet, apresentando conceitos como eventos, topologias de eventos, padrões como notificação de eventos e transferência de estado, além de abordar implementações e benefícios desta arquitetura.
Desenvolvimento de sistemas com mensageriaPaula Santana
A apresentação discute arquitetura de sistemas com mensageria, incluindo padrões como event-driven e microsserviços. Apresenta como o Java Message Service (JMS) resolveu problemas de integração entre aplicações e define uma API padronizada. Explica como implementar sistemas de mensageria usando JMS com conexões, filas e tópicos.
O documento discute a Quarta Revolução Industrial, caracterizada pela internet das coisas, automação e inteligência artificial. Ela está ocorrendo mais rápido que as revoluções anteriores e terá grande impacto em sistemas interconectados e profissões, podendo eliminar vagas em jornalismo, correios e áreas como atendimento e manufatura. A palestrante também destaca os desafios de atualização profissional nesse cenário.
Este documento apresenta o projeto JNoSQL, um framework para desenvolvimento com bancos de dados NoSQL em Java. O JNoSQL fornece uma API padronizada para comunicação com diferentes bancos NoSQL através dos módulos Diana e Artemis, divididos em camadas para facilitar a implementação e troca de bancos. O projeto tem como objetivo simplificar o uso de bancos NoSQL no Java.
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaPaula Santana
Este documento discute arquiteturas baseadas em eventos para sistemas complexos na internet. Apresenta os desafios de sistemas gigantes, como volumetria de dados e integrações, e como arquiteturas baseadas em eventos podem resolver esses problemas através de padrões como publicação/assinatura de eventos e event sourcing. Também discute implementações com brokers de eventos e modelos de entrega como filas e tópicos.
Arquitetura orientada a eventos em ambientes complexos tdcPaula Santana
O documento discute arquitetura orientada a eventos em ambientes complexos, apresentando conceitos como event sourcing, CQRS e Kafka. Também apresenta casos de uso e empresas que utilizam essa abordagem.
Este documento discute testes de contrato, incluindo: 1) o que é um contrato, 2) problemas com contratos no dia-a-dia como atualizações que quebram funcionalidades, 3) tipos de contratos como orientados ao consumidor, 4) ferramentas como Swagger e Pact, e 5) a importância de testar contratos para garantir a qualidade e compatibilidade entre serviços.
O documento discute Spring Boot e REST, destacando como o Spring Boot facilita a configuração e publicação de aplicações e foca nas regras de negócio. Explica que REST usa protocolos HTTP para enviar e receber informações de forma escalável e extensível, listando métodos HTTP como GET, POST, DELETE e PUT. Também lista códigos do Spring como @RestController, @RequestMapping e @PathVariable para implementar APIs RESTful.
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Paula Santana
Afinal, quais impressões e práticas foram vivenciadas atuando com estas ferramentas? O que para tirar de conclusão positiva ou negativa desta experiência?
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
7. @zupinnovation zup.com.br
<>
Equals() e HashCode()
● Ao sobrescrever o
equals sobrescreva o
hashcode
● Utilize o campos
principais do objeto
● Obedeça o contrato geral
● Não sobrescreva em classes
que não são objeto de valor
13. @zupinnovation zup.com.br
<>
Sobrescrever o toString()
Todo objeto herda o toString da Classe
Object.
Por default é utilizado o nome da classe + @ +
o hexadecimal sem sinal do hashcode.
14. @zupinnovation zup.com.br
<>
Facilidade na depuração Retornar todas as
informações pertinentes
contidas no objeto
É importante que os
dados contidos no
toString tenham
métodos de acesso
como get
Sobre sobrescrever o toString()
21. @zupinnovation zup.com.br
<>
Setters
Não forneça métodos que mudem o
estado do objeto.
Herança
Garanta que a classe não possa ser
estendida.
Final
Faça com que todos os campos
sejam finais.
Tenha em mente ao Implementar
Private
Faça com que todos os campos
sejam privados.
Mutabilidade
Garanta acesso exclusivo a quaisquer
componentes mutáveis.
34. Os objetos imutáveis são
thread-safe, não exigem
sincronização, ou seja não serão
corrompidos em seu uso em
múltiplas threads
Evitam bugs de inconsistência
de dados devido a alterações de
objetos durante fluxos
complexos.
São ótimos para construção e
composição de outros objetos.
@zupinnovation zup.com.br
Vantagens
35. <>
@zupinnovation zup.com.br
Problemas
Um grande porém é a quantidade de instâncias
geradas quando trabalhamos com classes imutáveis,
isso pode se tornar um problema especialmente
quando os objetos são complexos e exigem um
volume alto do mesmo objeto por fluxo de execução.
Nesses casos é orientado preferirmos o uso de
classes primitivas nesse tipo de objeto, para melhoria
da performance.
36. <>
@zupinnovation zup.com.br
Uso de static factory
para criação de
objetos ao invés de
construtores públicos
Para classes de
domínios resista a
criação de setters a
menos que realmente
faça sentido.
Mesmo que sua classe
não seja totalmente
imutável de
preferência para
atributos do tipo final
a menos que haja
necessidade de não
ser
Alternativas da modelagem
38. Métodos
Existem muitos cuidados que devemos ter quando falamos de
construção de métodos em Java, desde como elaboramos eles e
cuidados com alguns recursos como uso de varargs ou Optional.
Vamos analisar 4 itens que podem te ajudar no dia a dia.
Tome cuidado ao
projetar
assinaturas de
métodos Faça Cópias
Defensivas
Retorne
Coleções e
Arrays vazios ao
invés de nulos
Validação de
Parâmetros
39. <>
@zupinnovation zup.com.br
Nome de Métodos
Por convenção segue que os nomes devem ter um
verbo incluindo o objeto ao qual vão realizar a ação.
Em alguns tipos de retorno existem nomes mais
utilizados por convenção como o caso de métodos
que retornam tipos booleanos que tem o prefixo is ou
has, ou caso de conversão de valores onde é mais
usual utilizar o “to”, uma fonte desses padrões são as
próprias classes do Java.
42. <>
@zupinnovation zup.com.br
Evite listas longas de
parâmetro
Métodos com muitos parâmetros são um grande
problema, em especial porque os programadores
podem passar em ordem errada quando os tipos
seguidos são iguais.
Existem três técnicas para métodos que possuem
muitos parâmetros: quebrar o método em métodos
menores, criar um objeto específico como parâmetro
que agregue os parâmetros ou uso de Builder.
48. <>
@zupinnovation zup.com.br
O que mais considerar ao projetar um método
Prefira receber tipos no
parâmetro como
Interface ao invés da
implementação
Prefira utilizar ENUM de
dois elementos invés de
receber parâmetros
booleanos
49. <>
@zupinnovation zup.com.br
Cópias Defensivas
Um dos pontos das práticas de programação defensiva é referente a cópias de
objetos em métodos. Essas cópias não se aplicam somente a classes imutáveis, mas
evitam alterações em objetos de maneira não clara. Devemos sempre ponderar o uso
quando o requisito de desempenho for primordial
51. <>
@zupinnovation zup.com.br
Validação de Parâmetros
O ideal é que na entrada do método seja garantido que os valores e regras para execução do método sejam validados
para evitar erros que podem ser mais difíceis de serem detectados posteriormente.
53. @zupinnovation zup.com.br
<>
Primitivos tem apenas valores,
enquanto primitivos
empacotados produzem
instâncias na memória, mesmo
que possuam o mesmo valor.
Primitivos possuem apenas
valor funcional enquanto tipos
empacotados possuem valor
nulo.
Primitivos são mais eficientes
em tempo e armazenamento
do que os primitivos
empacotados.
58. <>
@zupinnovation zup.com.br
Checked
Utilize esse tipo de
exceção para as
condições das quais o
chamador possa
razoavelmente se
recuperar
Unchecked
Esse tipo de exceção é
lançada em tempo de
execução, esse tipo de
exception deve ser
utilizada para indicar
erro de programação
Exceções Checked e Unchecked
63. <>
@zupinnovation zup.com.br
Sempre na dúvida
utilize exceções não
verificadas
Pode ser muito confuso em que situações devemos
ou não implementar um tipo ou outro de exceção, a
recomendação é que se você não sabe se será
possível ter recuperação de um problema, que utilize
apenas o tipo Unchecked.
Exceções verificadas herdam de Exception, Exceções
não verificadas herdam de RuntimeException.
64. <>
@zupinnovation zup.com.br
Evite usar exceções do
tipo Unchecked para
controle de fluxo
Com o uso de Handlers em apis muito se criou de
confusão o que seria melhor tratar por código ou o
que seria melhor tratar por Exception.
Exceções deveriam ser utilizadas apenas em casos de
erros inesperados onde o programador realmente
não conseguiria prever o problema.
72. <>
@zupinnovation zup.com.br
Usem Enum ao invés
de constantes.
Utilizar Enum permite uma maior expressividade no
código, o tornando mais limpo, além de conseguirmos
implementar atributos e ações a cada elemento do
Enum e garantirmos imutabilidade já que eles
possuem valores fixos..
Cada constante do Enum gerará uma classe como
Singleton no sistema e a facilidade e manutenção
para valores fixos que podem aumentar é uma
vantagem.
76. <>
@zupinnovation zup.com.br
Evite o uso de tipo
Bruto
Através do uso de Genérics no Java garantimos o
tipo utilizado e avisamos o compilador sobre isso,
tornando mais segura a implementação do código.
Todo tipo genérico define um tipo bruto, que é o
nome do tipo genérico sem as informações de
genéricos nele. Por exemplo, o tipo genérico List<E>
tem o tipo bruto List. Vamos entender o que isso
pode impactar em nosso código.