SlideShare uma empresa Scribd logo
1 de 101
Baixar para ler offline
Mantendo o código
saudável
Ciências da Computação - UFSC
MBA em Gerenciamento de Projetos -
FGV
Dígitro Tecnologia
AgileCode
Rosana Angelo Branas
Você já se sentiu
desmotivado(a) como
desenvolvedor(a)?
A área de desenvolvimento de
software tem uma alta rotatividade!
Por que será?
Não nos sentimos profissionais
Temos a necessidade de sentir
orgulho do que estamos fazendo e
de que estamos sempre evoluindo!
Código ruim prejudica tudo que
está ao seu redor, sugando nossas
energias
Ficamos o tempo todo
corrigindo defeitos…
Demora cada vez mais tempo
para lançar novas versões…
Muita gente começa a
desistir no meio do caminho…
Código ruim causa um efeito
muito nocivo
Com o tempo fica impossível
continuar
Por que existe
tanto código ruim?
Questão cultural
1. READ INPUT TAPE A1, B1, C1;
2. 501 FORMAT A1;
3. IF (A1) 777, 777, 777
4. IF (B1) 888, 888, 888
5. IF (C1) 999, 999, 999
6. STOP 1
7. 799 S = FLOATF(A1 + B1 + C1) /
2.0
8. WRITE TO TAPE S
9. END PROCESS
As linguagens tinham restrições
Os ambientes limitavam
Os computadores limitavam
Geralmente quem manda não
entende de desenvolvimento
de software
"THE ONLY WAY
TO GO FAST IS TO
GO WELL.”
ROBERT MARTIN
Passamos a maior parte do
tempo lendo o código
Se você vê alguém digitando
rápido, ele não está
programando
Por isso, quanto mais
investimos em refactoring,
mais tempo economizamos.
E o inverso também é
verdadeiro.
“Refactoring é uma alteração
feita na estrutura interna do
software para mantê-lo mais fácil
de ser entendido e menos custoso
de ser modificado sem alterar seu
comportamento observável.”
MARTIN FOWLER
Refatore sempre que surgir a
oportunidade!
Como dar os
primeiros passos?
NOMES COM
SIGNIFICADO
1
Invista tempo em escolher
bons nomes
Usar nomes claros, que
revelam a intenção
Melhor um nome grande do
que um confuso
Use nomes relacionados ao
domínio da solução
ESCLAREÇA
INFORMAÇÕES
2
Declare constantes, variáveis
e funções sempre que isso
servir para melhorar o
entendimento do código
FUNÇÕES
3
Qual o tamanho ideal
de uma função?
Deve ser o menor possível
Funções devem ter uma
única responsabilidade
Use um nome por conceito
abstrato
Evitar side effects
ARGUMENTOS
Qual a quantidade
de parâmetros ideal?
Nenhum
Use no máximo 3
argumentos
Quando uma função parece
precisar de muitos argumentos,
talvez alguns deles possam ser
agrupados em um objeto
Evite argumentos do tipo flag
- true/false
Evite argumentos do tipo flag
- true/false
RETORNO
Funções devem fazer algo ou
retornar algo, nunca ambos
Prefira tratamento de exceções
a retornos estranhos
TRATAMENTO DE
EXCEÇÕES
De preferência usar blocos
try-catch “isolados"
COMENTÁRIOS
5
Comentários tentam
desvendar um código que
não está claro
“THE PROPER USE OF
COMMENTS IS TO
COMPENSATE FOR OUR
FAILURE TO EXPRESS
OURSELF IN CODE.”
ROBERT MARTIN
“DON’T COMMENT
BAD CODE -
REWRITE IT.”
BRIAN W. KERNINGHAN E
P. J. PLAUGHER
Comentários mentem,
mesmo sem intenção
‣ Comentário legal
‣ TODO
‣ Formato específico que
uma função retorna, etc.
Comentários são aceitáveis
quando não é possível
esclarecer com código
CÓDIGO
DESNECESSÁRIO
6
Código não usado deve ser
descartado
• Variáveis
• Parâmetros
• Funções
• Classes
• Códigos comentados
Abomine código duplicado
“DUPLICATION MAY
BE THE ROOT OF ALL
EVIL IN SOFTWARE.”
ROBERT MARTIN
FORMATAÇÃO
DO CÓDIGO
7
Definir um code style com a
equipe e segui-lo
Se possível, "automatize"
Manter arquivos pequenos
Organizar o código usando a
stepdown rule facilita a
legibilidade
FORMATAÇÃO
HORIZONTAL
Usar o tamanho da linha com
moderação
Sempre procurar formas de
quebrar o código de modo a
garantir a legibilidade
Sempre procurar formas de
quebrar o código de modo a
garantir a legibilidade
Se é necessário alinhamento
horizontal, tem algo errado
Cuidar com a distância da
margem
Simplificar estruturas de decisão
DECLARAÇÃO DE
VARIÁVEIS
Variáveis de instância devem
ficar no topo da classe
Se as funções são pequenas,
as variáveis devem ser
declaradas todas juntas no
topo da função
Caso contrário, variáveis
devem ser declaradas
próximas do seu uso
FUNÇÕES
Se uma função chama outra,
elas devem estar próximas
FUNÇÃO CHAMADORA
FUNÇÃO CHAMADA
Quanto maior a afinidade
conceitual, menor a distância
entre duas funções
Quanto mais importante o
conceito, mais para cima
deve estar
Questione-se
sempre!!!
Ajude a promover a cultura
da qualidade de código
Adote o Code Review: Evoluímos
e ajudamos outros a evoluírem
Crie testes automatizados
para garantir a integridade
do código após alterações
Obrigada!

Mais conteúdo relacionado

Mais procurados

Programar != desenvolver software
Programar != desenvolver softwareProgramar != desenvolver software
Programar != desenvolver softwareElton Minetto
 
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
 
10erros ppt
10erros ppt10erros ppt
10erros pptsubranco
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?tdc-globalcode
 
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
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmáticaelliando dias
 
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
 
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...tdc-globalcode
 
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
 
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
 
Quem tem medo de revisor?
Quem tem medo de revisor?Quem tem medo de revisor?
Quem tem medo de revisor?Mitsue Siqueira
 
#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 mainstreamsJacqueline Abreu
 
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014Gilmar PSL
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design PatternsMaicon Heck
 

Mais procurados (20)

O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
TDC 2015 - Torne-se um programador melhor
TDC 2015 - Torne-se um  programador melhorTDC 2015 - Torne-se um  programador melhor
TDC 2015 - Torne-se um programador melhor
 
Programar != desenvolver software
Programar != desenvolver softwareProgramar != desenvolver software
Programar != desenvolver software
 
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
 
10erros ppt
10erros ppt10erros ppt
10erros ppt
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
 
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)
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
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
 
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
 
Porque PHP?
Porque PHP?Porque PHP?
Porque PHP?
 
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...
 
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
 
Code smell gsw
Code smell   gswCode smell   gsw
Code smell gsw
 
Quem tem medo de revisor?
Quem tem medo de revisor?Quem tem medo de revisor?
Quem tem medo de revisor?
 
Clean Code
Clean CodeClean Code
Clean Code
 
#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
 
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
Projeto de API - TDC 2014 - Floripa - Trilha Arquitetura - 18/05/2014
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design Patterns
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 

Semelhante a Mantendo o código saudável

Projeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SThoughtworks
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
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
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedoresguitoper
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Test-driven development & Mocking
Test-driven development & MockingTest-driven development & Mocking
Test-driven development & MockingDaniel Tamiosso
 
TDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para TestersTDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para TestersStefan Teixeira
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisAna Paula Gomes
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Yasser Veleda
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vidaLuiz Borba
 
Community webcast
Community webcastCommunity webcast
Community webcastYan Justino
 
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
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoBonoBee
 

Semelhante a Mantendo o código saudável (20)

Projeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.S
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
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
 
Clean code
Clean codeClean code
Clean code
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedores
 
Clean code
Clean codeClean code
Clean code
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Test-driven development & Mocking
Test-driven development & MockingTest-driven development & Mocking
Test-driven development & Mocking
 
TDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para TestersTDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para Testers
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
SETIC Scrum & XP
SETIC Scrum & XPSETIC Scrum & XP
SETIC Scrum & XP
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vida
 
Community webcast
Community webcastCommunity webcast
Community webcast
 
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.
 
Código Limpo
Código LimpoCódigo Limpo
Código Limpo
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do código
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (6)

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Mantendo o código saudável