SlideShare a Scribd company logo
1 of 57
Thiago Barradas
Software Developer | MundiPagg
[ Web Applications ] [ ASP .NET ]
[ API RESTful ] [ Microsoft ♥ Linux ]
[ Elasticsearch ] [ DevOps ]
tbarradas@mundipagg.com
Linkedin: thiagobarradas
(21) 99329-9143
CLEAN CODE
POR UM MUNDO COM
CÓDIGOS MELHORES
POR QUE
VOCÊ ESTÁ AQUI?
PRECISAMOS MUITO DE
UM MUNDO COM
CÓDIGOS MELHORES
Robert C. Martin
(Uncle Bob)
The Clean Coder
Princípios do Clean Code
Eficiente
Simples
Direto ao ponto
Fácil leitura
Sem dependências
Fácil manutenção
Padrões definidos
Sem duplicação
Coberto de testes
Elegante
“Qualquer tolo consegue escrever
código que um computador entende.
Bons programadores escrevem código
que humanos podem entender.”
Martin Fowler
POSSO VER SEU CÓDIGO?
“Ainda ta bagunçado, depois vou
melhorar e refatorar o código.”
FILHO FEIO
NÃO TEM PAI!
“Fiz o meu melhor dentro do tempo que eu tinha.”
“Mas o prazo era extremamente curto.”
“Meu gestor me faz pressão o tempo inteiro.”
“Preciso entregar, preciso ser muito produtivo.”
NÃO EXISTE DESCULPA
PARA UM CÓDIGO RUIM!
TENHA ORGULHO DO SEU CÓDIGO!
OK. CHEGA DE LERO-LERO,
VAMOS AO QUE INTERESSA!
#1
NOMENCLATURA
Nomenclatura
Use nomes que revelem a intenção;
Use nomes pronunciáveis;
Não importa que o nome seja grande;
Mantenha o padrão, sempre;
Nomenclatura
#2
Classes
Classes
Ser representadas por substantivos;
Nome claro ao seu contexto;
Não importa que o nome seja grande;
Mantenha o padrão, sempre;
Classes
#3
Métodos
Métodos
Devem ser representados por verbos;
Nome claro ao seu contexto;
Devem ser pequenos. Quanto menor, melhor;
Extraia sempre que puder em métodos auxiliares,
seja um método privado ou utilitários;
Métodos
Um método deve fazer apenas uma coisa. Uma;
Argumentos booleanos não costumam ser elegantes.
Muitos parâmetros devem ser substituídos por
objetos.
Não importa que o nome seja grande;
Mantenha o padrão, sempre;
Métodos
Métodos
#4
Condições
Condições
Sempre que possível, extrai para métodos
privados;
Não importa que o nome seja grande;
Mantenha o padrão, sempre;
Condições
#5
Objetos e Estruturas de Dados
Objetos e Estruturas de Dados
Métodos de C;
Objetos criados por M;
Objetos passados por parâmetro para M;
Objetos em propriedades de instâncias de C.
Basicamente devem seguir a Lei de Demeter:
Um método M de uma classe C só deve conhecer:
#6
Abstração
Abstração
Tente ao máximo generalizar suas classes;
Abstraia em quantos níveis for preciso;
Não importa que o nome seja grande;
Mantenha o padrão, sempre;
Abstração
Abstração
#7
Comentários
Comentários
Um código bem escrito dispensa comentários;
São aceitáveis quando há necessidade de
explicação do negócio
Também para licença de uso e documentação;
Não importa que o comentário seja grande;
Mantenha o padrão, sempre;
Comentários
#8
Formatação do Código
Formatação do Código
Não existe um padrão definitivo para formatação;
Defina regras no time;
Tente sempre se basear no padrão que a
comunidade propõe;
Não importa que o padrão seja grande;
Mantenha o padrão, sempre;
#9
Exceções
Exceções
Utilize exceções específicas para seus erros;
Evite códigos de erros;
Trata exceções exclusivamente em métodos;
Não importa que o tratamento seja grande;
Mantenha o padrão, sempre;
Exceções
Exceções
#9
Testes
Testes
Se tiver flexibilidade pra usar o TDD, use;
Se não tiver, implemente testes continuamente a
cada implementação/correção;
Use e abuse; Teste de integração, funcional, etc;
Não importa que o teste seja grande;
Mantenha o padrão, sempre;
Testes
Fast: Testes rápidos, resultados rápidos.;
Indepedent: Não deve ter dependências;
Repeatable: Os testes devem funcionar em qualquer ambiente;
Self-validation: Não é necessária nenhuma validação manual;
Timely: Os testes devem ser elaborados antes do código;
Podemos seguir também o “F.I.R.S.T.”:
#10
Regra do Escoteiro
Regra do Escoteiro
“Deixe a área do acampamento mais limpa
do que quando e como você a encontrou.”
Regra do Escoteiro
“Deixe o código mais limpo do que quando e
como você o encontrou.”
Links
Clean Code: Por um Mundo com Códigos Melhores (Esta apresentação)
https://tinyurl.com/cleancode-tdc
Clean Code: Por um Mundo com Códigos Melhores (Artigo Revista/Online)
Revista iMasters #23 (Agosto 2017) – Páginas 56, 57, 58 e 59
https://issuu.com/imasters/docs/23
Clean Code: Por um Mundo com Códigos Melhores (Artigo Online)
http://barradas.me/2017/06/18/clean-code-um-mundo-codigo-melhores/
Referências e Links
Clean Code: A Handbook of Agile Software Craftsmanship
Robert C. Martin (2009) - Book
Clean Code: A Code of Conduct for Professional Programmers
Robert C. Martin (2011) - Book
Clean Code Presentation
Hendrik Ebel (2009) - https://tinyurl.com/cleancode-hendrikebel
Clean Code Presentation
Rodrigo Kono (2013) - https://tinyurl.com/cleancode-rodrigokono
Thiago Barradas
tbarradas@mundipagg.com
+55 (21) 99329-9143
Linkedin: thiagobarradas
Obrigado!

More Related Content

What's hot

WebCamps Software Testing
WebCamps Software TestingWebCamps Software Testing
WebCamps Software Testing
Rodrigo Vidal
 
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
Pedro Hos
 
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
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
Renato Oliveira
 

What's hot (20)

#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
 
WebCamps Software Testing
WebCamps Software TestingWebCamps Software Testing
WebCamps Software Testing
 
Oracle x PostgreSQL
Oracle x PostgreSQLOracle x PostgreSQL
Oracle x PostgreSQL
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
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
 
Abordando tdd no i os
Abordando tdd no i osAbordando tdd no i os
Abordando tdd no i os
 
Postgres Chainsaw Massacre
Postgres Chainsaw MassacrePostgres Chainsaw Massacre
Postgres Chainsaw Massacre
 
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
 
Programar != desenvolver software
Programar != desenvolver softwareProgramar != desenvolver software
Programar != desenvolver software
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhor
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Mantendo o código saudável
Mantendo o código saudávelMantendo o código saudável
Mantendo o código saudável
 
Quais são os erros mais comuns de um programador ruby
Quais são os erros mais comuns de um programador ruby Quais são os erros mais comuns de um programador ruby
Quais são os erros mais comuns de um programador ruby
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
PostgreSQL Wonderland TDC-SP 2015
PostgreSQL Wonderland TDC-SP 2015PostgreSQL Wonderland TDC-SP 2015
PostgreSQL Wonderland TDC-SP 2015
 
Clean Code
Clean CodeClean Code
Clean Code
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
 
Wire 2010 - Entenda Software da Forma Correta
Wire 2010 - Entenda Software da Forma CorretaWire 2010 - Entenda Software da Forma Correta
Wire 2010 - Entenda Software da Forma Correta
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 

Similar to Clean Code: Por um mundo com códigos melhores - The Developers Conference - Porto Alegre - 2017

Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 

Similar to Clean Code: Por um mundo com códigos melhores - The Developers Conference - Porto Alegre - 2017 (20)

TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Clean code
Clean codeClean code
Clean code
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
ZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivas
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
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
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a Testes
 
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
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Clean Code
Clean CodeClean Code
Clean Code
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 

More from Thiago Barradas

More from Thiago Barradas (7)

Capacity planning - Projetando o seu cluster de Elasticsearch
Capacity planning - Projetando o seu cluster de ElasticsearchCapacity planning - Projetando o seu cluster de Elasticsearch
Capacity planning - Projetando o seu cluster de Elasticsearch
 
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019
 
Criando componentes e disponibilizando o como opensource em 5 minutos em .NET
Criando componentes e disponibilizando o como opensource em 5 minutos em .NETCriando componentes e disponibilizando o como opensource em 5 minutos em .NET
Criando componentes e disponibilizando o como opensource em 5 minutos em .NET
 
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJCodacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
 
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016
 

Clean Code: Por um mundo com códigos melhores - The Developers Conference - Porto Alegre - 2017