SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
TDD com Clean Code
Chega de amadorismo!
Alison Rodrigues de Souza
Motociclista
Programador JAVA
Agilista
Certificado Scrum Master
André Dias Lima
Programador JAVA
Agilista
Pós-graduando em Metodos Ágeis
O mundo está cheio de
gambiarras...
WTF?
Amadorismo
Significado de Amador segundo
Aurélio: (...) Que pratica qualquer
arte ou esporte, sem ser um
profissional.(...)
Desenvolvedor Profissional
Qualquer tolo pode escrever código
que um computador consiga
entender. Bons programadores
escrevem código que HUMANOS
consigam entender.
Martin Fowler
martinfowler.com
Então…
como podemos
criar código que
humanos
possam
entender?
Robert Martin = Uncle Bob
“...Um código
limpo é simples e
direto...”
Grady Booch
“Big” Dave Thomas
Além do seu
criador, um
desenvolvedor
pode ler e
melhorar um
código limpo...
Ron jeffries
Expressa todas
as ideias do
projeto que estão
no sistema….
Ward Cunningham
Você sabe que está
criando um código
limpo quando cada
rotina que você le se
mostra como você
esperava...
Clean Code
Simples e direto, um desenvolvedor
pode ler.
Cada rotina que você le mostra
como você expressa todas as ideias.
Nomes significativos
Faça distinções significativas, use
nomes diferentes dentro de um mesmo
escopo.
Nomes como a1, a2, a3 são o oposto de
nomes que demonstram intenção - são
confusos e não informam nada.
Nomes significativos
Evite também usar abreviações ou
trocadilhos, escreva exatamente o
que você quer dizer, o nome deve
ser auto-explicativo.
Nomes significativos
É comprovado que um desenvolvedor
passa muito mais tempo lendo
código do que escrevendo, por isso
não se preocupe em economizar
caracteres ao escolher um nome.
Comentários
Comentários podem ser úteis se
colocados nos lugares certos, mas
também podem ser mentirosos e trazer
desinformação.
Comentários
Na verdade, o melhor comentário é
aquele que não precisa ser escrito.
Um dos principais motivos para você
escrever um comentário é porque o
código está difícil de ser entendido.
Comentários
Você acha que o código ficou meio
confuso e acha melhor adicionar um
comentário? Não, você precisa
refatorar!
Método
Métodos devem conter no máximo
20 linhas e seu nível de identação
não pode ser maior que dois.
Método
Quanto ao conteúdo, um
método deve ter somente
UMA responsabilidade.
Classes e Formatação
A legibilidade do código terá profundo efeito sobre
todas as mudanças que serão feitas, seu estilo e
disciplina sobrevive sobre estas mudanças.
Procure escrever classes com no máximo 500
linhas, classes menores são mais fáceis de se
entender. Já para as linhas de código, tente
estabelecer um limite de caracteres por linha.
Classes e Formatação
Uma boa identação ajuda a visualizar
melhor todo o escopo e facilita a
identificação de situações e regras
relevantes.
Classes e Formatação
Tente manter conceitos
relacionados mais próximos
verticalmente, para criar um
fluxo na leitura do código.
Classes e Formatação
Use espaços entre
operadores, parâmetros e
vírgulas.
Classes e Formatação
Evite deixar o código todo
grudado.
Tratamentos de erros
Prefira lançar uma exception ao invés
de retornar um código de erro, estes
retornos desorganizam a chamada do
método.
Tipos de testes
Kent Beck
Não existe
desenvolvedor
profissional que
não faça testes
unitários no seu
código!
Klaus
Wuestefeld
Unit Test (2 a 7 linhas)
Service (Máximo 20 linhas)
Por que usar TDD?
Bateria de testes cresce
O código já nasce testado
Me faz pensar no requisito
Simplicidade
Me ajuda no design
Maior segurança para mudanças
Exemplos de testes
TDD em Código legado
TDD em Código legado
#SomosTodosProgramadores
Obrigado!
Contatos
Site/Blog: alisonsouza.com.br
Twitter: @AlisonRSouza
GitHub: AlisonSouza
E-mail: contato@alisonsouza.com.br

Mais conteúdo relacionado

Mais procurados

Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
Boas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em códigoBoas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em códigoMariana de Azevedo Santos
 
Refatoração: Como deixar seu código livre de maus Cheiros
Refatoração: Como deixar seu código livre de maus CheirosRefatoração: Como deixar seu código livre de maus Cheiros
Refatoração: Como deixar seu código livre de maus CheirosPedro Hos
 
Como começar a programar!
Como começar a programar!Como começar a programar!
Como começar a programar!Augusto Bilabila
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador PragmaticoLeonardo Fernandes
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss DanielChristofolli
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamentothiagodp
 
Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinarZG Soluções
 
Tdd direto das trincheiras
Tdd direto das trincheirasTdd direto das trincheiras
Tdd direto das trincheirasScumpb
 
Coding Dojo - Pycon Br 2008 - PT-BR
Coding Dojo - Pycon Br 2008 - PT-BRCoding Dojo - Pycon Br 2008 - PT-BR
Coding Dojo - Pycon Br 2008 - PT-BRHugo Corbucci
 
O Programador Pragmático
O Programador PragmáticoO Programador Pragmático
O Programador PragmáticoTadeu Marinho
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheirasLuiz Borba
 
Test Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoTest Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoHélio Medeiros
 
TDD Direto das Trincheiras versao 2
TDD Direto das Trincheiras versao 2TDD Direto das Trincheiras versao 2
TDD Direto das Trincheiras versao 2Luiz Borba
 
Aula 1 módulo i - psi
Aula 1   módulo i - psiAula 1   módulo i - psi
Aula 1 módulo i - psi111111119
 

Mais procurados (20)

Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
#safaDojo com Android
#safaDojo com Android#safaDojo com Android
#safaDojo com Android
 
Boas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em códigoBoas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em código
 
Refatoração: Como deixar seu código livre de maus Cheiros
Refatoração: Como deixar seu código livre de maus CheirosRefatoração: Como deixar seu código livre de maus Cheiros
Refatoração: Como deixar seu código livre de maus Cheiros
 
Como começar a programar!
Como começar a programar!Como começar a programar!
Como começar a programar!
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
Clean code
Clean codeClean code
Clean code
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinar
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Tdd direto das trincheiras
Tdd direto das trincheirasTdd direto das trincheiras
Tdd direto das trincheiras
 
Coding Dojo - Pycon Br 2008 - PT-BR
Coding Dojo - Pycon Br 2008 - PT-BRCoding Dojo - Pycon Br 2008 - PT-BR
Coding Dojo - Pycon Br 2008 - PT-BR
 
O Programador Pragmático
O Programador PragmáticoO Programador Pragmático
O Programador Pragmático
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheiras
 
Test Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoTest Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concreto
 
TDD Direto das Trincheiras versao 2
TDD Direto das Trincheiras versao 2TDD Direto das Trincheiras versao 2
TDD Direto das Trincheiras versao 2
 
Aula 1 módulo i - psi
Aula 1   módulo i - psiAula 1   módulo i - psi
Aula 1 módulo i - psi
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 

Semelhante a TDD com Clean Code

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 (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Yasser Veleda
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Community webcast
Community webcastCommunity webcast
Community webcastYan Justino
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
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
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedoresguitoper
 
Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDDIsmael
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Gabriel Rubens
 
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
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean CodeAndré Leoni
 

Semelhante a TDD com Clean Code (20)

O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
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 (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
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
 
Community webcast
Community webcastCommunity webcast
Community webcast
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
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...
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedores
 
Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDD
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
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?
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean Code
 

TDD com Clean Code