SlideShare uma empresa Scribd logo
Edlaine
Z A M O R A
Camilla
C R I S P I M
Edilaine
Z A M O R A
Camilla
C R I S P I M
"O que esse código faz?"
"Como vou fazer para alterar
esse comportamento?"
"E se eu quebrar alguma coisa?"
Para evitar situações como essas é que
devemos escrever código
para pessoas
Por que?
Produtividade
Sistemas Legados
Teoria da Janela
Quebrada
Dê bom exemplo
O que é um
bom código?
Código que Funciona
Quando pode ser
jogado fora
depois
Código que Funciona
WTF por minuto
Quer saber se
seu código é
bom?
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."
"É elegante, eficiente, simples, possui
lógica direta, poucas dependências, um
bom tratamento de erro, abstrações
- Uncle Bob (Robert C. Martin)
Código Limpo
Clean Code
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."
"É elegante, eficiente, simples, possui
lógica direta, poucas dependências, um
bom tratamento de erro, abstrações
- Uncle Bob (Robert C. Martin)
Código Limpo
Clean Code
Código Limpo
O livro
Código Limpo
COMO?
Não é só ler
o livro
Código Limpo
Código Limpo
COMO?
Requer interesse e prática
Leve para o seu dia-a-dia
Dicas para escrever um
código limpo
#1 Regra da Escoteira
Deixe o acampamento código mais
limpo do que como você o
encontrou
Evite a teoria da janela quebrada
#2 Esqueça os
comentários
Se o código precisa de comentário,
tem algo errado
"Não escreva comentários em um
código ruim, reescreva-o"
- Brian W. KErnighan e P.J. Plaugher
#3 Nomes Significativos
Dê nomes significativos a tudo
Variáveis - Funções - Parâmetros Classes - Pacotes
Comentários, na grande maioria das vezes,
são desnecessários
#4 Formatação
A discussão não é sobre
tab ou espaço
É sobre consistência
O software precisa de
formatação consistente
#5 Funções Simples
É pequena
Faz uma coisa só
Sem estrutura aninhada
#6 Evite Duplicações
Não se repitaDRY - Don't Repeat Yourself
"Nada é melhor que qualquer
coisa"
- Sandi Metz
"Duplicação ainda é melhor que
abstração errada"
- Sandi Metz
#7 Estrutura de dados e
Objetos
Saiba diferenciar
e saiba quando usar o que
Estruturas de dados expõem
informações
Objetos expõem comportamentos
que encapsulam informações
São diferentes
#8 Testes Automatizados
Permite
iterar no código, em busca
de um código melhor
Teste também é código
Todas as dicas se aplicam
Facilidade - Simplicidade - Consistência de expressão
Uma asserção por teste
O time deve escrever
código limpo, legível e
para pessoas
eXtreme
ProgrammingXP:
"É um framework ágil de
desenvolvimento de software
- Qualidade do software
- Qualidade de vida da equipe
- Foco em práticas
- Feedback
- Comunicação
- Simplicidade
- Coragem
ValoresXP:
Processo Contínuo
Refactoring
Integração Contínua
Aperfeiçoamento do
design
Pequenas Releases
Feedback em escala
Cliente presente
Programação em par
Planejamento
TDD
PráticasXP:
Entendimento compartilhado
Código Padronizado
Código Coletivo
Design Simples
Metáfora do sistema
Standup Meeting
Bem-estar do times
Ritmo Sustentável
Todas
são capazes de descrever
o que o sistema faz
Entendimento comum
Código reflete o negócio:
lógica, nome de classes, etc
Código fica fácil de ser entendido por
todas
Metáfora do Sistema
Duas visões
sobre o mesmo problema,
solução e código é melhor
que uma
Enquanto uma escreve,
a outra já está revisando
Programação em Par
Visão holística
do que está acontecendo
Contexto do que outros pares
estão fazendo
Dependência
entre tarefas
Standup
TDD
Teste automatizado ou unitário
não é TDD
Testar antes de desenvolver
Pequenos passos. Todos os cenários.
Melhor entendimento das
necessidades de negócio
Aumenta a qualidade
Melhora design
Alterar o código
sem alterar o
comportamento
A cada refactoring, o código fica
mais significativo, mais simples
e mais fácil de ser
modificado
Sem testes automatizados,
sem refactoring
Refactoring
Design é como se
organiza o código
A fim de
reduzir custo de mudança
código fácil de entender - código fácil de mudar:
menor tempo, menor custo
"Duplicação é melhor que código
difícil de entender/evoluir"
- Sandi Metz
Design Simples
Todas escrevem no
mesmo repositório
Todas devem seguir o mesmo
padrão de escrita
de código
Código Coletivo e
Padronizado
Ritmo Sustentável
Trabalhar no
período normal,
sem horas extras
Cabeça descansada
Melhores soluções
Não comprometer a qualidade
quando sob pressão
Algumas coisas não são negociáveis
Escreva código para o seu
eu do futuro#1
Requer prática. Tenha artifícios
(como os do XP) que possam
ajudar
#2
Não adianta ir sozinha. Envolva
outras pessoas nessa jornada!#3
Camilla Crispim
ccrispim@thoughtworks.com
cmllacrspm
Edlaine Zamora
ezamora@thoughtworks.com
P E R G U N T A S ?
Código Limpo
Clean Code
É elegante, eficiente e simples
Tem lógica direta; faz somente o
necessário
Tem poucas dependências, bom
tratamento de erro e abstrações
evidentes
Tem testes automatizados e pode ser
alterado com facilidade
Tem nomes significativos
Tem métodos e objetos que fazem
única tarefa
Tem nada óbvio para ser melhorado
É lido naturalmente, tamanha
expressividade
Parece ter sido escrito por alguém que
se importa

Mais conteúdo relacionado

Mais procurados

Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
Carlos Santana
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
Carlos Santana
 
Metodos ageis thinkingdifferent
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferent
Paulo Igor Alves Godinho
 
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Iure Guimaraes
 
XPCE - Qualidade no Código
XPCE - Qualidade no CódigoXPCE - Qualidade no Código
XPCE - Qualidade no Código
José Araújo
 
React e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer CirclesReact e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer Circles
José Barbosa
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
Raphael Paiva
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
Tiago Link
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação Icaro Camelo
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
Leonardo "Hackin" Freire
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizados
Breno Oliveira
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
thiagobapt
 
Apresentação BDD
Apresentação BDDApresentação BDD
Apresentação BDD
Tiago Link
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Joao Galdino Mello de Souza
 
O que é código bonito?
O que é código bonito?O que é código bonito?
O que é código bonito?
Maurício Aniche
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
Miguel Schmitz Grazziotin
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funciona
Rodrigo Serradura
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedores
guitoper
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
diegomcunha
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
Josenaldo de Oliveira Matos Filho
 

Mais procurados (20)

Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
 
Metodos ageis thinkingdifferent
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferent
 
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )
 
XPCE - Qualidade no Código
XPCE - Qualidade no CódigoXPCE - Qualidade no Código
XPCE - Qualidade no Código
 
React e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer CirclesReact e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer Circles
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizados
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Apresentação BDD
Apresentação BDDApresentação BDD
Apresentação BDD
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
 
O que é código bonito?
O que é código bonito?O que é código bonito?
O que é código bonito?
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funciona
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedores
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
 

Semelhante a Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - DevDay BH 2018

Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
Thiago Faria de Andrade
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
Rogerio Fontes
 
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
Paulo Henrique da Silva
 
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
Gabriel Felipe Soares
 
Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
Paulo Rebelo, MSc, PMP, CSP
 
Extreme Programming Explicada
Extreme Programming ExplicadaExtreme Programming Explicada
Extreme Programming Explicada
Maurício Linhares
 
Clean Code
Clean CodeClean Code
Clean Code
Daniel Tamiosso
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Thiago Barradas
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
Evelise Vazquez
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
Lucas Boeing Scarduelli
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
cesarcneto
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
Hélio Medeiros
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
Rafael Paz
 
O Programador Pragmático
O Programador PragmáticoO Programador Pragmático
O Programador Pragmático
Tadeu Marinho
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
Dionatan default
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
Universidade Federal de Minas Gerais
 

Semelhante a Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - DevDay BH 2018 (20)

Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
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
 
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
 
TDD
TDDTDD
TDD
 
Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
 
Extreme programming explicada
Extreme programming explicadaExtreme programming explicada
Extreme programming explicada
 
Extreme Programming Explicada
Extreme Programming ExplicadaExtreme Programming Explicada
Extreme Programming Explicada
 
Clean Code
Clean CodeClean Code
Clean Code
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Clean code
Clean codeClean code
Clean code
 
O Programador Pragmático
O Programador PragmáticoO Programador Pragmático
O Programador Pragmático
 
Clean code clickbus
Clean code   clickbusClean code   clickbus
Clean code clickbus
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
 

Mais de Edlaine Zamora

Arquitetura evolutiva
Arquitetura evolutivaArquitetura evolutiva
Arquitetura evolutiva
Edlaine Zamora
 
ArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em Java
ArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em JavaArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em Java
ArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em Java
Edlaine Zamora
 
Microsoft Xamarin
Microsoft XamarinMicrosoft Xamarin
Microsoft Xamarin
Edlaine Zamora
 
TDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua APITDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua API
Edlaine Zamora
 
Escreva código para pessoas além de máquinas
Escreva código para pessoas além de máquinasEscreva código para pessoas além de máquinas
Escreva código para pessoas além de máquinas
Edlaine Zamora
 
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Edlaine Zamora
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Edlaine Zamora
 
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterGerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Edlaine Zamora
 
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxComo analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Edlaine Zamora
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
Edlaine Zamora
 
Jhipster
JhipsterJhipster
Jhipster
Edlaine Zamora
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Edlaine Zamora
 

Mais de Edlaine Zamora (12)

Arquitetura evolutiva
Arquitetura evolutivaArquitetura evolutiva
Arquitetura evolutiva
 
ArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em Java
ArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em JavaArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em Java
ArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em Java
 
Microsoft Xamarin
Microsoft XamarinMicrosoft Xamarin
Microsoft Xamarin
 
TDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua APITDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua API
 
Escreva código para pessoas além de máquinas
Escreva código para pessoas além de máquinasEscreva código para pessoas além de máquinas
Escreva código para pessoas além de máquinas
 
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterGerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
 
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxComo analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
 
Jhipster
JhipsterJhipster
Jhipster
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
 

Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - DevDay BH 2018

  • 1.
  • 2. Edlaine Z A M O R A Camilla C R I S P I M
  • 3. Edilaine Z A M O R A Camilla C R I S P I M
  • 4. "O que esse código faz?" "Como vou fazer para alterar esse comportamento?" "E se eu quebrar alguma coisa?"
  • 5. Para evitar situações como essas é que devemos escrever código para pessoas
  • 10. O que é um bom código?
  • 11. Código que Funciona Quando pode ser jogado fora depois
  • 13. WTF por minuto Quer saber se seu código é bom?
  • 14. 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." "É elegante, eficiente, simples, possui lógica direta, poucas dependências, um bom tratamento de erro, abstrações - Uncle Bob (Robert C. Martin) Código Limpo Clean Code
  • 15. 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." "É elegante, eficiente, simples, possui lógica direta, poucas dependências, um bom tratamento de erro, abstrações - Uncle Bob (Robert C. Martin) Código Limpo Clean Code
  • 17. Não é só ler o livro Código Limpo Código Limpo COMO?
  • 18. Requer interesse e prática Leve para o seu dia-a-dia
  • 19. Dicas para escrever um código limpo
  • 20. #1 Regra da Escoteira Deixe o acampamento código mais limpo do que como você o encontrou Evite a teoria da janela quebrada
  • 21. #2 Esqueça os comentários Se o código precisa de comentário, tem algo errado "Não escreva comentários em um código ruim, reescreva-o" - Brian W. KErnighan e P.J. Plaugher
  • 22. #3 Nomes Significativos Dê nomes significativos a tudo Variáveis - Funções - Parâmetros Classes - Pacotes Comentários, na grande maioria das vezes, são desnecessários
  • 23. #4 Formatação A discussão não é sobre tab ou espaço É sobre consistência O software precisa de formatação consistente
  • 24. #5 Funções Simples É pequena Faz uma coisa só Sem estrutura aninhada
  • 25. #6 Evite Duplicações Não se repitaDRY - Don't Repeat Yourself "Nada é melhor que qualquer coisa" - Sandi Metz "Duplicação ainda é melhor que abstração errada" - Sandi Metz
  • 26. #7 Estrutura de dados e Objetos Saiba diferenciar e saiba quando usar o que Estruturas de dados expõem informações Objetos expõem comportamentos que encapsulam informações São diferentes
  • 27. #8 Testes Automatizados Permite iterar no código, em busca de um código melhor Teste também é código Todas as dicas se aplicam Facilidade - Simplicidade - Consistência de expressão Uma asserção por teste
  • 28. O time deve escrever código limpo, legível e para pessoas
  • 29. eXtreme ProgrammingXP: "É um framework ágil de desenvolvimento de software - Qualidade do software - Qualidade de vida da equipe - Foco em práticas
  • 30. - Feedback - Comunicação - Simplicidade - Coragem ValoresXP:
  • 31. Processo Contínuo Refactoring Integração Contínua Aperfeiçoamento do design Pequenas Releases Feedback em escala Cliente presente Programação em par Planejamento TDD PráticasXP: Entendimento compartilhado Código Padronizado Código Coletivo Design Simples Metáfora do sistema Standup Meeting Bem-estar do times Ritmo Sustentável
  • 32. Todas são capazes de descrever o que o sistema faz Entendimento comum Código reflete o negócio: lógica, nome de classes, etc Código fica fácil de ser entendido por todas Metáfora do Sistema
  • 33. Duas visões sobre o mesmo problema, solução e código é melhor que uma Enquanto uma escreve, a outra já está revisando Programação em Par
  • 34. Visão holística do que está acontecendo Contexto do que outros pares estão fazendo Dependência entre tarefas Standup
  • 35. TDD Teste automatizado ou unitário não é TDD Testar antes de desenvolver Pequenos passos. Todos os cenários. Melhor entendimento das necessidades de negócio Aumenta a qualidade Melhora design
  • 36. Alterar o código sem alterar o comportamento A cada refactoring, o código fica mais significativo, mais simples e mais fácil de ser modificado Sem testes automatizados, sem refactoring Refactoring
  • 37. Design é como se organiza o código A fim de reduzir custo de mudança código fácil de entender - código fácil de mudar: menor tempo, menor custo "Duplicação é melhor que código difícil de entender/evoluir" - Sandi Metz Design Simples
  • 38. Todas escrevem no mesmo repositório Todas devem seguir o mesmo padrão de escrita de código Código Coletivo e Padronizado
  • 39. Ritmo Sustentável Trabalhar no período normal, sem horas extras Cabeça descansada Melhores soluções Não comprometer a qualidade quando sob pressão Algumas coisas não são negociáveis
  • 40. Escreva código para o seu eu do futuro#1 Requer prática. Tenha artifícios (como os do XP) que possam ajudar #2 Não adianta ir sozinha. Envolva outras pessoas nessa jornada!#3
  • 42. Código Limpo Clean Code É elegante, eficiente e simples Tem lógica direta; faz somente o necessário Tem poucas dependências, bom tratamento de erro e abstrações evidentes Tem testes automatizados e pode ser alterado com facilidade Tem nomes significativos Tem métodos e objetos que fazem única tarefa Tem nada óbvio para ser melhorado É lido naturalmente, tamanha expressividade Parece ter sido escrito por alguém que se importa