SlideShare uma empresa Scribd logo
1 de 29
Qualidade de
Software
Prof. Rennan Alves
Código Limpo
Que porta representa seu código?
Definição de Código Limpo
• A melhor definição de Código Limpo que encontrei foi:
“Código limpo é código fácil de entender e fácil de alterar.”
Fácil de entender significa
• Fácil de ler pelo autor ou por outros desenvolvedores;
• Fácil de entender o fluxo de execução de toda aplicação;
• Fácil de entender como os diferentes objetos colaboram uns com
os outros;
• Fácil de entender o papel e a responsabilidade de cada classe;
• Fácil de entender o que cada método faz;
• Fácil de entender qual é o propósito de cada expressão e variável;
Fácil de alterar significa
• Fácil de estender e refatorar o código
• Fácil de corrigir bugs no código;
• Fácil de introduzir as alterações sem “quebrar” nenhuma
funcionalidade;
• Fácil de testar com testes unitários já existentes e/ou fácil
de escrever os testes;
• Fácil de entender os testes;
Regras gerais
• Siga as convenções:
Se o projeto tem convenções e por exemplo utilizam
constantes em maiúsculo, siga sempre os padrões do
projeto.
Regras gerais
• Regra do escoteiro:
• “Deixe sempre o acampamento mais limpo do que você
encontrou!". Isto também vale para o código. Claro que
realizando todos os testes necessários para não impactar outras
partes do projeto e tendo a atenção de atender as entregas.
Regras gerais
• Causa raiz:
• Sempre procure a causa raiz do problema para que ele seja
resolvido. Soluções superficiais somando gastam tempo sem
agregar valor ao produto
Regras sobre entendimento do código
• Seja consistente:
• Se você executa algo de uma forma, execute todo o resto desta
mesma forma. Seja consistente na forma com que aplica o
código. Siga sempre o padrão definido.
Regras sobre entendimento do código
• Utilize variáveis concisas:
• Opte por variáveis concisas, mesmo que resultem em um nome
maior. Elas devem ser autoexplicativas, sem a necessidade de
comentários ou informações adicionais.
Regras para os nomes
• Escolha nomes descritivos:
• Escolher bons nomes para classes, variáveis e métodos é essencial
para um código limpo. Lembre-se que se você precisa explicar seu
código, então algo pode ser melhorado nele.
Regras para os nomes
• Faça distinções significantes:
• Utilize sempre nomes nos quais quem estiver lendo seu código
possa diferenciar seu significado de outros possíveis nomes.
Regras para os nomes
• Utilize nomes “pronunciáveis” e “buscáveis”
• Evite utilizar nomes difíceis de pronunciar ou inventar nomes
variáveis, classes e métodos. Lembre-se sempre da
(linguagem comum a todos os envolvidos) e da importância
Regras para os nomes
• Evite uso excessivo de strings
• Quem nunca perdeu horas procurando um BUG que era apenas um
problema de comparação de string? Evite digitar a mesma string
várias vezes, utilize constantes para isto.
Regras para funções ou métodos
• Pequenas e com apenas um objetivo:
• Mantenha suas funções ou métodos o menor possível. É melhor ter métodos
menores e reutilizáveis do que tudo dentro de um método só.
Regras para funções ou métodos
• Utilize nomes descritivos:
• A mesma regra dos nomes anteriormente vista aqui se aplica para este cenário.
Mantenha nomes concisos, sem caracteres especiais.
Regras para funções ou métodos
• Opte por poucos parâmetros:
• Evite exigir muitos parâmetros para construção do objeto.
• Cuidado com efeitos colaterais
• Evite que uma função altere valores de outra classe sem ser a dela. Isto é
chamado de efeito colateral.
Regras de comentários
• Um código bom é expressivo:
• Teoricamente, se você precisa comentar uma parte do seu código, é porque algo
está errado com ele, ele não está expressivo o suficiente.
Regras de comentários
• Não seja redundante:
• Mantenha suas funções ou métodos o menor possível. É melhor ter métodos
menores e reutilizáveis do que tudo dentro de um método só.
• Não feche os comentários:
• Não há necessidade de fechar os comentários – polui menos o código.
Regras de comentários
• Evite códigos comentados
• Não deixe sujeira em seu código, ao invés de deixar algo
comentado, remova ele. Hoje temos “versionadores” de código,
você pode "voltar no tempo" facilmente.
• Comentários sobre esclarecimento
• Uso interessante para os comentários são esclarecimentos sobre o
código e o processo a ser controlado – não sobre o comando a ser
executado.
Estrutura do código
• Separe os conceitos verticalmente
• Mantenha uma estrutura de pastas saudável e organizada.
pasta para cada arquivo, mas pode haver uma separação por
• Declare variáveis próximas de seu uso
• Não crie todas as variáveis juntas, no começo da class ou
próximas de onde serão utilizadas.
Estrutura do código
• Agrupe funcionalidades similares
• Se uma função pertence a um grupo dentro de um objeto,
mantenha-as sempre por perto.
• Declare funções de cima para baixo
• Ordenar as funções também é importante. Além da sua ordem de
grandeza, suas assinaturas também devem ter uma boa
organização.
Estrutura do código
• Mantenha poucas e curtas linhas
• Evite funções com linhas longas ou muitas linhas. Não existe um
número correto, mas com certeza quanto mais código em uma
função, mais difícil de mantê-la será.
• Não use alinhamento horizontal
• Não há necessidade de alinhar horizontalmente variáveis,
constantes ou mesmo propriedades.
Estrutura do código
• Use os espaços em branco corretamente
• Utilize espaço em branco para associar ou não itens relacionados.
Uma boa IDE já fará este trabalho por você.
• Não quebre a indentação
• Este item dispensa comentários. Um código não indentado não
pode ser enviado para o projeto.
Testes
• Cada teste deve tratar de apenas um tipo de função
• Mais de uma função por teste pode confundir e comprometer a
escrita do seu teste.
• Devem ser legíveis
• Trate seus testes como parte fundamental do seu código, não
secundária. Os testes têm que ser organizados e bem escritos
assim como o resto do seu software.
Testes
• Devem ser rápidos
• Um dos objetivos principais de um teste é cobrir uma pequena porção
do nosso código. Normalmente estendemos esta ideia para a maior
parte do código possível, ocasionando uma ampla gama de testes de
unidade. Então os testes devem ser de rápida execução para não
afetar o tempo do deploys da aplicação como um todo.
• Deve permitir repetição
• Devemos ter a possibilidade de repetir o mesmo teste, mas com
parâmetros diferentes.
Conclusão
“Todas as regras do Clean Code ajudam a diminuir o principal
problema que os sistemas enfrentam: a manutenção. Facilita a
vida do programador autor do código e de outros que
necessitam manter o código. Menos tempo, menos custo e
maior produtividade.”
Referência
BELFIORE, Patrícia; FÁVERO, Luiz Paulo. Pesquisa operacional
para cursos de engenharia. Elsevier Brasil, 2013.
HILLIER, F. S; LIEBERMAN, G. J. Introdução à pesquisa
operacional. 8ª. Edição. Porto Alegre: Bookman, 2006.
TAHA, H. A. Pesquisa operacional. 8ª. Edição. São Paulo:
Pearson Prentice Hall, 2008.

Mais conteúdo relacionado

Semelhante a Codigo limpo.pptx

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: 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
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"Cesar Romero
 
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
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
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
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
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ândiaRogerio Fontes
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
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
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoAlexandre Andrade
 

Semelhante a Codigo limpo.pptx (20)

Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
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: 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
 
Code Smells
Code SmellsCode Smells
Code Smells
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
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 na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
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...
 
Revisão de C# 4.0
Revisão de C# 4.0Revisão de C# 4.0
Revisão de C# 4.0
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
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
 
Refatoração de Código Legado
Refatoração de Código LegadoRefatoração de Código Legado
Refatoração de Código Legado
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
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
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinho
 

Codigo limpo.pptx

  • 3. Que porta representa seu código?
  • 4. Definição de Código Limpo • A melhor definição de Código Limpo que encontrei foi: “Código limpo é código fácil de entender e fácil de alterar.”
  • 5. Fácil de entender significa • Fácil de ler pelo autor ou por outros desenvolvedores; • Fácil de entender o fluxo de execução de toda aplicação; • Fácil de entender como os diferentes objetos colaboram uns com os outros; • Fácil de entender o papel e a responsabilidade de cada classe; • Fácil de entender o que cada método faz; • Fácil de entender qual é o propósito de cada expressão e variável;
  • 6. Fácil de alterar significa • Fácil de estender e refatorar o código • Fácil de corrigir bugs no código; • Fácil de introduzir as alterações sem “quebrar” nenhuma funcionalidade; • Fácil de testar com testes unitários já existentes e/ou fácil de escrever os testes; • Fácil de entender os testes;
  • 7. Regras gerais • Siga as convenções: Se o projeto tem convenções e por exemplo utilizam constantes em maiúsculo, siga sempre os padrões do projeto.
  • 8. Regras gerais • Regra do escoteiro: • “Deixe sempre o acampamento mais limpo do que você encontrou!". Isto também vale para o código. Claro que realizando todos os testes necessários para não impactar outras partes do projeto e tendo a atenção de atender as entregas.
  • 9. Regras gerais • Causa raiz: • Sempre procure a causa raiz do problema para que ele seja resolvido. Soluções superficiais somando gastam tempo sem agregar valor ao produto
  • 10. Regras sobre entendimento do código • Seja consistente: • Se você executa algo de uma forma, execute todo o resto desta mesma forma. Seja consistente na forma com que aplica o código. Siga sempre o padrão definido.
  • 11. Regras sobre entendimento do código • Utilize variáveis concisas: • Opte por variáveis concisas, mesmo que resultem em um nome maior. Elas devem ser autoexplicativas, sem a necessidade de comentários ou informações adicionais.
  • 12. Regras para os nomes • Escolha nomes descritivos: • Escolher bons nomes para classes, variáveis e métodos é essencial para um código limpo. Lembre-se que se você precisa explicar seu código, então algo pode ser melhorado nele.
  • 13. Regras para os nomes • Faça distinções significantes: • Utilize sempre nomes nos quais quem estiver lendo seu código possa diferenciar seu significado de outros possíveis nomes.
  • 14. Regras para os nomes • Utilize nomes “pronunciáveis” e “buscáveis” • Evite utilizar nomes difíceis de pronunciar ou inventar nomes variáveis, classes e métodos. Lembre-se sempre da (linguagem comum a todos os envolvidos) e da importância
  • 15. Regras para os nomes • Evite uso excessivo de strings • Quem nunca perdeu horas procurando um BUG que era apenas um problema de comparação de string? Evite digitar a mesma string várias vezes, utilize constantes para isto.
  • 16. Regras para funções ou métodos • Pequenas e com apenas um objetivo: • Mantenha suas funções ou métodos o menor possível. É melhor ter métodos menores e reutilizáveis do que tudo dentro de um método só.
  • 17. Regras para funções ou métodos • Utilize nomes descritivos: • A mesma regra dos nomes anteriormente vista aqui se aplica para este cenário. Mantenha nomes concisos, sem caracteres especiais.
  • 18. Regras para funções ou métodos • Opte por poucos parâmetros: • Evite exigir muitos parâmetros para construção do objeto. • Cuidado com efeitos colaterais • Evite que uma função altere valores de outra classe sem ser a dela. Isto é chamado de efeito colateral.
  • 19. Regras de comentários • Um código bom é expressivo: • Teoricamente, se você precisa comentar uma parte do seu código, é porque algo está errado com ele, ele não está expressivo o suficiente.
  • 20. Regras de comentários • Não seja redundante: • Mantenha suas funções ou métodos o menor possível. É melhor ter métodos menores e reutilizáveis do que tudo dentro de um método só. • Não feche os comentários: • Não há necessidade de fechar os comentários – polui menos o código.
  • 21. Regras de comentários • Evite códigos comentados • Não deixe sujeira em seu código, ao invés de deixar algo comentado, remova ele. Hoje temos “versionadores” de código, você pode "voltar no tempo" facilmente. • Comentários sobre esclarecimento • Uso interessante para os comentários são esclarecimentos sobre o código e o processo a ser controlado – não sobre o comando a ser executado.
  • 22. Estrutura do código • Separe os conceitos verticalmente • Mantenha uma estrutura de pastas saudável e organizada. pasta para cada arquivo, mas pode haver uma separação por • Declare variáveis próximas de seu uso • Não crie todas as variáveis juntas, no começo da class ou próximas de onde serão utilizadas.
  • 23. Estrutura do código • Agrupe funcionalidades similares • Se uma função pertence a um grupo dentro de um objeto, mantenha-as sempre por perto. • Declare funções de cima para baixo • Ordenar as funções também é importante. Além da sua ordem de grandeza, suas assinaturas também devem ter uma boa organização.
  • 24. Estrutura do código • Mantenha poucas e curtas linhas • Evite funções com linhas longas ou muitas linhas. Não existe um número correto, mas com certeza quanto mais código em uma função, mais difícil de mantê-la será. • Não use alinhamento horizontal • Não há necessidade de alinhar horizontalmente variáveis, constantes ou mesmo propriedades.
  • 25. Estrutura do código • Use os espaços em branco corretamente • Utilize espaço em branco para associar ou não itens relacionados. Uma boa IDE já fará este trabalho por você. • Não quebre a indentação • Este item dispensa comentários. Um código não indentado não pode ser enviado para o projeto.
  • 26. Testes • Cada teste deve tratar de apenas um tipo de função • Mais de uma função por teste pode confundir e comprometer a escrita do seu teste. • Devem ser legíveis • Trate seus testes como parte fundamental do seu código, não secundária. Os testes têm que ser organizados e bem escritos assim como o resto do seu software.
  • 27. Testes • Devem ser rápidos • Um dos objetivos principais de um teste é cobrir uma pequena porção do nosso código. Normalmente estendemos esta ideia para a maior parte do código possível, ocasionando uma ampla gama de testes de unidade. Então os testes devem ser de rápida execução para não afetar o tempo do deploys da aplicação como um todo. • Deve permitir repetição • Devemos ter a possibilidade de repetir o mesmo teste, mas com parâmetros diferentes.
  • 28. Conclusão “Todas as regras do Clean Code ajudam a diminuir o principal problema que os sistemas enfrentam: a manutenção. Facilita a vida do programador autor do código e de outros que necessitam manter o código. Menos tempo, menos custo e maior produtividade.”
  • 29. Referência BELFIORE, Patrícia; FÁVERO, Luiz Paulo. Pesquisa operacional para cursos de engenharia. Elsevier Brasil, 2013. HILLIER, F. S; LIEBERMAN, G. J. Introdução à pesquisa operacional. 8ª. Edição. Porto Alegre: Bookman, 2006. TAHA, H. A. Pesquisa operacional. 8ª. Edição. São Paulo: Pearson Prentice Hall, 2008.