SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
Escreva Código para Pessoas Além de
Máquinas
Edlaine Zamora
Thalita Gomes
Sobre nós
Desenvolvedora de Software na ThoughtWorks
Formada em Informática pela Universidade Estadual de
Maringá
Especializada em Desenvolvimento Web pela Universidade
Estadual de Maringá
Experiência de 6 anos de desenvolvimento de software
@EdlaineZamora
Sobre nós
Deva na ThoughtWorks =)
Formada em Sistemas de Informação pela Universidade
Federal dos Vales do Jequitinhonha e Mucuri
Especializada em Gestão de Projetos Ágeis
Experiência de 6 anos de desenvolvimento de software
@ThalitaPinheiro
Por que devemos
escrever um bom
código?
Por que devemos escrever um bom código?
Escreva código para Pessoas além de Máquinas
Por que devemos escrever um bom código?
Escreva código para Pessoas além de Máquinas
Por que devemos escrever um bom código?
Escreva código para Pessoas além de Máquinas
Equipe
escreve
código ruim
Fica irritante
qualquer
alteração no
código
É solicitado o
replanejamento
do software
Uma nova
equipe é
selecionada
para isso
Por que devemos escrever um bom código?
Teoria da Janela Quebrada
Escreva código para Pessoas além de Máquinas
O que é um bom
código?
O que é um bom código?
Escreva código para Pessoas além de Máquinas
O que é um bom código?
Escreva código para Pessoas além de Máquinas
O que é um bom código?
Escreva código para Pessoas além de Máquinas
O que é um bom código?
Escreva código para Pessoas além de Máquinas
"É elegante, eficiente, simples, possui lógica direta, poucas
dependências, um bom tratamento de erro, abstrações claras, contém
apenas o necessário, possui testes automatizados, pode ser alterado com
facilidade, possui nomes significativos, possuem métodos e objetos que
fazem apenas uma tarefa, não possui nada de óbvio para ser melhorado.
Pode ser lido de forma natural, possui alta expressividade e parece que foi
escrito por alguém que se importa."
Tio Bob (Robert C. Martin)
Ok, mas como
podemos fazer um
código assim?
Como podemos escrever um bom código?
Utilize a Regra do Escoteiro
Deixe a área do acampamento mais limpa do que como você a encontrou!
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Nomes Significativos
Variáveis, funções, parâmetros, classes,
pacotes, arquivos fontes, diretórios, etc.
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Nomes Significativos
Escreva nomes com fácil pronúncia
❖ Ex: generation date, year, month, day, hour, minute e second)
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Nomes Significativos
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Boas Funções
Escreva funções:
❖ Pequenas
❖ Sem estruturas aninhadas
❖ Que faça apenas uma coisa
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Boas Funções
Mantenha o menor número de parâmetros possível
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Boas Funções
Cuidado com "Efeitos Colaterais"
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Boas Funções
Evite duplicações
❖ A duplicação pode ser a raiz de todo o mal no software
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Boas Funções
Porém…
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Escreva Boas Funções
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Evite Escrever Comentários
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Evite Escrever Comentários
"Não insira comentários em um código ruim, reescreva-o"
(Brian W. KErnighan e P.J. Plaugher)
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Evite Escrever Comentários
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Evite Escrever Comentários
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Comentários em Códigos Público
❖ Se o código é público, uma biblioteca por exemplo, escrever um bom Javadoc é
essencial para sua utilização
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Faça uma Boa Formatação
❖ A formatação do código é importante
❖ Serve como comunicação
○ Cada linha representa uma expressão ou estrutura
○ Cada grupo de linhas representa um pensamento completo
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Faça uma Boa Formatação
E o mais importante...
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Faça uma Boa Formatação combinada com a Equipe
❖ Cada desenvolvedor(a) tem suas regras de formatação preferidas
❖ Se for trabalhar em equipe, as regras são delas
○ O software precisa ter uma formatação consistente
○ A última coisa que precisamos é adicionar mais complexidade ao código
programando-o com um monte de estilo diferente
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Saiba Diferenciar Estrutura de dados de Objetos
As estruturas de dados expõem seus
dados e não possuem funções significativas
Escreva código para Pessoas além de Máquinas
Estrutura de
dados
Como podemos escrever um bom código?
Saiba Diferenciar Estrutura de dados de Objetos
Os objetos usam abstrações para esconder
seus dados, e expõem as funções que operam
em tais dados
Escreva código para Pessoas além de Máquinas
Estrutura de
dados
Como podemos escrever um bom código?
Faça um Bom Tratamento de Erro
❖ Retornar código de erro é uma violação da separação comando-consulta
○ Ex.: if (deletePage(page) == E_OK) {...}
❖ Além disso, o chamador da função é obrigado a lidar imediatamente com o erro
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Faça um Bom Tratamento de Erro
❖ A exceção deve fornecer o contexto suficiente para determinar a fonte e a localização de
um erro
❖ Crie mensagem de erro informativa e a passe juntamente com a exceção
❖ Mencione a operação que falhou e o tipo de falha
Escreva código para Pessoas além de Máquinas
Escreva código para Pessoas além de Máquinas
Como podemos escrever um bom código?
Faça Testes Automatizados
❖ Teste deve ser mantido limpo
❖ Os testes devem ser legíveis
❖ E o que torna o teste legível?
○ Clareza
○ Simplicidade
○ Consistência de expressão
TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas

Mais conteúdo relacionado

Semelhante a TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas

Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...Edlaine Zamora
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareGabriel Felipe Soares
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Elaine Naomi
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedoresguitoper
 
Carreira em Desenvolvimento de Software
Carreira em Desenvolvimento de SoftwareCarreira em Desenvolvimento de Software
Carreira em Desenvolvimento de SoftwareFlávio de Sousa
 
Previsibilidade em desenvolvimento de software
Previsibilidade em desenvolvimento de softwarePrevisibilidade em desenvolvimento de software
Previsibilidade em desenvolvimento de softwareDenis Ferrari
 
Caminho Do Desenvolvedor Amador Para o Profissional
Caminho Do Desenvolvedor Amador Para o ProfissionalCaminho Do Desenvolvedor Amador Para o Profissional
Caminho Do Desenvolvedor Amador Para o ProfissionalGiovanni Bassi
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento4Soft
 
Clean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoClean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoPaulo Henrique da Silva
 
Vendedores grátis consult - 20120213 - Curitiba
Vendedores grátis   consult - 20120213 - CuritibaVendedores grátis   consult - 20120213 - Curitiba
Vendedores grátis consult - 20120213 - CuritibaFernando Misato
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehaveMarcelo Zeferino
 
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...tdc-globalcode
 

Semelhante a TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas (20)

Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de Software
 
Clean Code
Clean CodeClean Code
Clean Code
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
Microsoft C#
Microsoft C#Microsoft C#
Microsoft C#
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedores
 
Carreira em Desenvolvimento de Software
Carreira em Desenvolvimento de SoftwareCarreira em Desenvolvimento de Software
Carreira em Desenvolvimento de Software
 
Previsibilidade em desenvolvimento de software
Previsibilidade em desenvolvimento de softwarePrevisibilidade em desenvolvimento de software
Previsibilidade em desenvolvimento de software
 
Caminho Do Desenvolvedor Amador Para o Profissional
Caminho Do Desenvolvedor Amador Para o ProfissionalCaminho Do Desenvolvedor Amador Para o Profissional
Caminho Do Desenvolvedor Amador Para o Profissional
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
 
Clean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoClean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimento
 
Vendedores grátis consult - 20120213 - Curitiba
Vendedores grátis   consult - 20120213 - CuritibaVendedores grátis   consult - 20120213 - Curitiba
Vendedores grátis consult - 20120213 - Curitiba
 
Código limpo
Código limpoCódigo limpo
Código limpo
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehave
 
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
 
TDD com Clean Code: Chega de amadorismo!
TDD com Clean Code: Chega de amadorismo!TDD com Clean Code: Chega de amadorismo!
TDD com Clean Code: Chega de amadorismo!
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadetdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucessotdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPAtdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinotdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicestdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publicatdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocustdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciatdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Servicetdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETtdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Coretdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxLusGlissonGud
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 

Último (20)

"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 

TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas

  • 1. Escreva Código para Pessoas Além de Máquinas Edlaine Zamora Thalita Gomes
  • 2. Sobre nós Desenvolvedora de Software na ThoughtWorks Formada em Informática pela Universidade Estadual de Maringá Especializada em Desenvolvimento Web pela Universidade Estadual de Maringá Experiência de 6 anos de desenvolvimento de software @EdlaineZamora
  • 3. Sobre nós Deva na ThoughtWorks =) Formada em Sistemas de Informação pela Universidade Federal dos Vales do Jequitinhonha e Mucuri Especializada em Gestão de Projetos Ágeis Experiência de 6 anos de desenvolvimento de software @ThalitaPinheiro
  • 4. Por que devemos escrever um bom código?
  • 5. Por que devemos escrever um bom código? Escreva código para Pessoas além de Máquinas
  • 6. Por que devemos escrever um bom código? Escreva código para Pessoas além de Máquinas
  • 7. Por que devemos escrever um bom código? Escreva código para Pessoas além de Máquinas Equipe escreve código ruim Fica irritante qualquer alteração no código É solicitado o replanejamento do software Uma nova equipe é selecionada para isso
  • 8. Por que devemos escrever um bom código? Teoria da Janela Quebrada Escreva código para Pessoas além de Máquinas
  • 9. O que é um bom código?
  • 10. O que é um bom código? Escreva código para Pessoas além de Máquinas
  • 11. O que é um bom código? Escreva código para Pessoas além de Máquinas
  • 12. O que é um bom código? Escreva código para Pessoas além de Máquinas
  • 13. O que é um bom código? Escreva código para Pessoas além de Máquinas "É elegante, eficiente, simples, possui lógica direta, poucas dependências, um bom tratamento de erro, abstrações claras, contém apenas o necessário, possui testes automatizados, pode ser alterado com facilidade, possui nomes significativos, possuem métodos e objetos que fazem apenas uma tarefa, não possui nada de óbvio para ser melhorado. Pode ser lido de forma natural, possui alta expressividade e parece que foi escrito por alguém que se importa." Tio Bob (Robert C. Martin)
  • 14. Ok, mas como podemos fazer um código assim?
  • 15. Como podemos escrever um bom código? Utilize a Regra do Escoteiro Deixe a área do acampamento mais limpa do que como você a encontrou! Escreva código para Pessoas além de Máquinas
  • 16. Como podemos escrever um bom código? Escreva Nomes Significativos Variáveis, funções, parâmetros, classes, pacotes, arquivos fontes, diretórios, etc. Escreva código para Pessoas além de Máquinas
  • 17. Como podemos escrever um bom código? Escreva Nomes Significativos Escreva nomes com fácil pronúncia ❖ Ex: generation date, year, month, day, hour, minute e second) Escreva código para Pessoas além de Máquinas
  • 18. Como podemos escrever um bom código? Escreva Nomes Significativos Escreva código para Pessoas além de Máquinas
  • 19. Como podemos escrever um bom código? Escreva Boas Funções Escreva funções: ❖ Pequenas ❖ Sem estruturas aninhadas ❖ Que faça apenas uma coisa Escreva código para Pessoas além de Máquinas
  • 20. Como podemos escrever um bom código? Escreva Boas Funções Mantenha o menor número de parâmetros possível Escreva código para Pessoas além de Máquinas
  • 21. Como podemos escrever um bom código? Escreva Boas Funções Cuidado com "Efeitos Colaterais" Escreva código para Pessoas além de Máquinas
  • 22. Como podemos escrever um bom código? Escreva Boas Funções Evite duplicações ❖ A duplicação pode ser a raiz de todo o mal no software Escreva código para Pessoas além de Máquinas
  • 23. Como podemos escrever um bom código? Escreva Boas Funções Porém… Escreva código para Pessoas além de Máquinas
  • 24. Como podemos escrever um bom código? Escreva Boas Funções Escreva código para Pessoas além de Máquinas
  • 25. Como podemos escrever um bom código? Evite Escrever Comentários Escreva código para Pessoas além de Máquinas
  • 26. Como podemos escrever um bom código? Evite Escrever Comentários "Não insira comentários em um código ruim, reescreva-o" (Brian W. KErnighan e P.J. Plaugher) Escreva código para Pessoas além de Máquinas
  • 27. Como podemos escrever um bom código? Evite Escrever Comentários Escreva código para Pessoas além de Máquinas
  • 28. Como podemos escrever um bom código? Evite Escrever Comentários Escreva código para Pessoas além de Máquinas
  • 29. Como podemos escrever um bom código? Comentários em Códigos Público ❖ Se o código é público, uma biblioteca por exemplo, escrever um bom Javadoc é essencial para sua utilização Escreva código para Pessoas além de Máquinas
  • 30. Como podemos escrever um bom código? Faça uma Boa Formatação ❖ A formatação do código é importante ❖ Serve como comunicação ○ Cada linha representa uma expressão ou estrutura ○ Cada grupo de linhas representa um pensamento completo Escreva código para Pessoas além de Máquinas
  • 31. Como podemos escrever um bom código? Faça uma Boa Formatação E o mais importante... Escreva código para Pessoas além de Máquinas
  • 32. Como podemos escrever um bom código? Faça uma Boa Formatação combinada com a Equipe ❖ Cada desenvolvedor(a) tem suas regras de formatação preferidas ❖ Se for trabalhar em equipe, as regras são delas ○ O software precisa ter uma formatação consistente ○ A última coisa que precisamos é adicionar mais complexidade ao código programando-o com um monte de estilo diferente Escreva código para Pessoas além de Máquinas
  • 33. Como podemos escrever um bom código? Saiba Diferenciar Estrutura de dados de Objetos As estruturas de dados expõem seus dados e não possuem funções significativas Escreva código para Pessoas além de Máquinas Estrutura de dados
  • 34. Como podemos escrever um bom código? Saiba Diferenciar Estrutura de dados de Objetos Os objetos usam abstrações para esconder seus dados, e expõem as funções que operam em tais dados Escreva código para Pessoas além de Máquinas Estrutura de dados
  • 35. Como podemos escrever um bom código? Faça um Bom Tratamento de Erro ❖ Retornar código de erro é uma violação da separação comando-consulta ○ Ex.: if (deletePage(page) == E_OK) {...} ❖ Além disso, o chamador da função é obrigado a lidar imediatamente com o erro Escreva código para Pessoas além de Máquinas
  • 36. Como podemos escrever um bom código? Faça um Bom Tratamento de Erro ❖ A exceção deve fornecer o contexto suficiente para determinar a fonte e a localização de um erro ❖ Crie mensagem de erro informativa e a passe juntamente com a exceção ❖ Mencione a operação que falhou e o tipo de falha Escreva código para Pessoas além de Máquinas
  • 37. Escreva código para Pessoas além de Máquinas Como podemos escrever um bom código? Faça Testes Automatizados ❖ Teste deve ser mantido limpo ❖ Os testes devem ser legíveis ❖ E o que torna o teste legível? ○ Clareza ○ Simplicidade ○ Consistência de expressão