SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
What about Clean Code?
Marcelo Santos - @marcelsud
What about Clean Code?
“It is not enough for code to work.”
Robert C. Martin (Uncle Bob)
● Código duplicado
● Classes longas (se houver)
● Parâmetros demais
● Falta de testes (ou nenhum)
● Falta de Coding Standards
● No design patterns at all
● Código morto
● Alta curva de aprendizado
● Uma alteração, vários bugs
● Alocação de mais recursos
● Elevado custo em manutenção
● Queda de produtividade
● Perda de performance
● Remendos / Gambiarras
● ...
Consequências de código ruim
A Regra do Escoteiro
“Deixe a área do acampamento mais limpa do que
como você a encontrou”
Boy Scouts of America
Nomes significativos
Como?
● Pronunciáveis
● Que revele seu propósito
Onde?
● Variáveis
● Métodos
● Parâmetros
● Classes
● Namespaces
● etc
Nomes ruins
Nomes melhores
Parâmetros demais
Os métodos devem ter um número pequeno de parâmetros.
Nenhum é o ideal.
Acima de três é questionável.
Parâmetros demais
Poucos parâmetros
Comentários
Comentários
"Não insira comentários num código ruim, reescreva-o"
Brian W. Kernighan e P. J. Plaugher
Não faça isso…
Lembre-se...
Se você precisa esclarecer seu código com um
comentário, talvez seja um bom momento para
revê-lo.
Duplicação
DRY: Don’t Repeat Yourself
Sempre que você vir duplicação em código, isso significa que
você perdeu uma chance para abstração.
Encontre e elimine duplicações sempre que puder!
Código morto
● Variáveis não utilizadas
● Pedaços de código inúteis
● Comentários que não acrescentam informações
Faça a coisa certa: Dê a eles um funeral decente!
Flag Arguments
“Argumentos Booleanos claramente declaram que o
método possui mais que uma responsabilidade. Eles
são confusos e devem ser eliminados.”
Uncle Bob
Flag Arguments
Flag Arguments
Encapsular condicionais
melhor que...
Substituir números mágicos por constantes
melhor que...
Evitar condicionais negativas
melhor que...
Coding Standards
“Softwares são feitos para ser lidos por humanos, e somente
incidentemente para ser executados por computadores”
H. Abelson and G. Sussman
Tratamento de erros
● Evitar retornar um código de erro
● Lançar excessões com contexto
● Não retornar NULL
● Utilizar mensagens informativas
Testes unitários
Fast: Devem ser rápidos.
Independent: Sem depender uns dos outros e na hora que desejar.
Repeatable: Devem passar tanto no servidor, quanto num notebook sem wi-fi.
Self-validating: Devem garantir o resultado sem intervenção manual.
Timely: Devem ser criados antes do código.
LoD: Law of Demeter
Design by Contract
Design Patterns
Orthogonality
Cohesion
SOLID
Classes
SOLID
SRP: Single responsibility principle
a class should have only a single responsibility.
OCP: Open/closed principle
“software entities … should be open for extension, but closed for modification”.
LSP: Liskov substitution principle
“objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”
ISP: Interface segregation principle
“many client-specific interfaces are better than one general-purpose interface.”
DIP: Dependency inversion principle
one should “Depend upon Abstractions. Do not depend upon concretions.”
Classes
KISS: Keep it simple, stupid!
"A perfeição é alcançada não quando não há mais nada para adicionar,
mas quando não há mais nada que se possa retirar"
Antoine de Saint-Exupéry, autor de "O Pequeno Príncipe"
Toda complexidade desnecessária deve ser descartada.
What about Clean Code?
Marcelo Santos - @marcelsud

Mais conteúdo relacionado

Semelhante a Clean code clickbus

Community webcast
Community webcastCommunity webcast
Community webcastYan Justino
 
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
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheirasHigor César
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
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
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
Refinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoRefinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoAécio Costa
 
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
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Pedro Edson Silva Barros
 

Semelhante a Clean code clickbus (20)

Community webcast
Community webcastCommunity webcast
Community webcast
 
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 - ...
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
 
Código limpo
Código limpoCódigo limpo
Código limpo
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
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
Clean codeClean code
Clean code
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Refinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoRefinamento e boas práticas de programação
Refinamento e boas práticas de programação
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
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
 
Clean Code
Clean CodeClean Code
Clean Code
 
Clean code
Clean codeClean code
Clean code
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
Code Smells
Code SmellsCode Smells
Code Smells
 
O que é código bonito?
O que é código bonito?O que é código bonito?
O que é código bonito?
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
 

Clean code clickbus

  • 1. What about Clean Code? Marcelo Santos - @marcelsud
  • 2. What about Clean Code? “It is not enough for code to work.” Robert C. Martin (Uncle Bob)
  • 3. ● Código duplicado ● Classes longas (se houver) ● Parâmetros demais ● Falta de testes (ou nenhum) ● Falta de Coding Standards ● No design patterns at all ● Código morto ● Alta curva de aprendizado ● Uma alteração, vários bugs ● Alocação de mais recursos ● Elevado custo em manutenção ● Queda de produtividade ● Perda de performance ● Remendos / Gambiarras ● ... Consequências de código ruim
  • 4. A Regra do Escoteiro “Deixe a área do acampamento mais limpa do que como você a encontrou” Boy Scouts of America
  • 5.
  • 6.
  • 7.
  • 8. Nomes significativos Como? ● Pronunciáveis ● Que revele seu propósito Onde? ● Variáveis ● Métodos ● Parâmetros ● Classes ● Namespaces ● etc
  • 11. Parâmetros demais Os métodos devem ter um número pequeno de parâmetros. Nenhum é o ideal. Acima de três é questionável.
  • 15. Comentários "Não insira comentários num código ruim, reescreva-o" Brian W. Kernighan e P. J. Plaugher
  • 17. Lembre-se... Se você precisa esclarecer seu código com um comentário, talvez seja um bom momento para revê-lo.
  • 18. Duplicação DRY: Don’t Repeat Yourself Sempre que você vir duplicação em código, isso significa que você perdeu uma chance para abstração. Encontre e elimine duplicações sempre que puder!
  • 19. Código morto ● Variáveis não utilizadas ● Pedaços de código inúteis ● Comentários que não acrescentam informações Faça a coisa certa: Dê a eles um funeral decente!
  • 20. Flag Arguments “Argumentos Booleanos claramente declaram que o método possui mais que uma responsabilidade. Eles são confusos e devem ser eliminados.” Uncle Bob
  • 24. Substituir números mágicos por constantes melhor que...
  • 26. Coding Standards “Softwares são feitos para ser lidos por humanos, e somente incidentemente para ser executados por computadores” H. Abelson and G. Sussman
  • 27. Tratamento de erros ● Evitar retornar um código de erro ● Lançar excessões com contexto ● Não retornar NULL ● Utilizar mensagens informativas
  • 28. Testes unitários Fast: Devem ser rápidos. Independent: Sem depender uns dos outros e na hora que desejar. Repeatable: Devem passar tanto no servidor, quanto num notebook sem wi-fi. Self-validating: Devem garantir o resultado sem intervenção manual. Timely: Devem ser criados antes do código.
  • 29. LoD: Law of Demeter Design by Contract Design Patterns Orthogonality Cohesion SOLID Classes
  • 30. SOLID SRP: Single responsibility principle a class should have only a single responsibility. OCP: Open/closed principle “software entities … should be open for extension, but closed for modification”. LSP: Liskov substitution principle “objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program” ISP: Interface segregation principle “many client-specific interfaces are better than one general-purpose interface.” DIP: Dependency inversion principle one should “Depend upon Abstractions. Do not depend upon concretions.”
  • 31. Classes KISS: Keep it simple, stupid! "A perfeição é alcançada não quando não há mais nada para adicionar, mas quando não há mais nada que se possa retirar" Antoine de Saint-Exupéry, autor de "O Pequeno Príncipe" Toda complexidade desnecessária deve ser descartada.
  • 32. What about Clean Code? Marcelo Santos - @marcelsud