SlideShare uma empresa Scribd logo
O seu código fede e você nem
sabia. Ou sabia, mas não o
quanto fede!
Wagner Mendes Voltz - FUSCA
Agenda
• Apresentação
• Definição dívida técnica
• Definição code smells
• Como identificar
• Como prevenir
• Como corrigir
Apresentação
• Curitibano e paranista!
• Formado em Tecnologia em Informática –
UFPR – 2005
• Especialização em Gestão da informação
– FAE Business School
• Desenvolvedor de sistemas desde 2005
• Java, Android, Agile
• CSM – Certified ScrumMaster
• Atualmente gerente de projetos/scrum
master
• twitter.com/tiofusca
• wagnerfusca@gmail.com
• http://www.devparana.org/
Dívida técnica
Toda e qualquer alteração no código fonte,
realizada por um time de desenvolvimento
de software que não gera melhoria em
sua qualidade
Dívida técnica
“entrar num ambiente sujo e deixá-lo do
mesmo jeito ou pior”
Dívida técnica
Ao manter o “ambiente sujo”, acúmulo juros.
Dívida técnica
“A dívida técnica é similar à dívida financeira. Assim como
a dívida financeira, a dívida técnica exige o pagamento
de juros. Estes vem na forma de esforço extra, que
devem ser pagos em desenvolvimentos futuros por
conta da escolha de um design mais rápido e de baixa
qualidade.
Nós podemos optar por continuar pagando estes juros ou
quitar de uma vez a dívida fazendo uma refatoração,
transformando um design de baixa qualidade em um
design melhor. Apesar dos custos para saldar a dívida,
ganhamos reduzindo os juros no futuro.”
Martin Fowler
Uma pausa
Divida técnica - sintomas
• Perda de satisfação do cliente quanto a
primeira entrega
• Demora para entregar o software
• Atrasos nas entregas
• Erros de estimativas com frequência
• Entrega de software com bug em
produção
Divida técnica - sintomas
• Projeto engessado
• Time frustrado
• Cobertura de testes fraca
• Suíte de testes que demora para ser
executada
• //TODO E //FIXME
• Problemas de comunicação na equipe
Code Smells
Definição: sintoma de que algo no código
pode estar errado.
Geralmente indica a necessidade de um
refactoring ou de alteração estrutural da
aplicação.
Exemplo de codes smells
• Comentários
• Método longo
• Classe longa
• Longa lista de parâmetros
• Código duplicado
• Complexidade condicional
• Nomes inconsistentes
• Obsessão primitiva
Como medir ?
SonarQube
http://www.sonarqube.org/
Dois indicadores simples
• Complexidade ciclomática (condicional)
– mede a quantidade de caminhos de execução
independentes a partir de um código fonte
• NCSS
– Determina o numero de linhas que um
método deve ter
Dinâmica do dois chapéus: Kent
Beck
Adicionar Funcionalidade
Não altera código pré existente
Refatorar
Não acrescenta funcionalidade
Dúvidas?
• twitter.com/tiofusca
• wagnerfusca@gmail.com
• http://www.devparana.org/

Mais conteúdo relacionado

Destaque

Artesanato de software - Caipira Ágil 2015
Artesanato de software - Caipira Ágil 2015Artesanato de software - Caipira Ágil 2015
Artesanato de software - Caipira Ágil 2015
Percival Lucena
 
Agile Brazil -Wbma 2014
Agile Brazil -Wbma 2014Agile Brazil -Wbma 2014
Agile Brazil -Wbma 2014
Graziela Simone Tonin
 
Dealing with Legacy PHP Applications
Dealing with Legacy PHP ApplicationsDealing with Legacy PHP Applications
Dealing with Legacy PHP Applications
Clinton Dreisbach
 
Relatos de uma empresa ágil
Relatos de uma empresa ágilRelatos de uma empresa ágil
Relatos de uma empresa ágil
José Barbosa
 
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
tdc-globalcode
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
Daniel Archer Marques Cramer
 
Vá além com cortana e windows 10
Vá além com cortana e windows 10Vá além com cortana e windows 10
Vá além com cortana e windows 10
José Barbosa
 
Petroretail activity
Petroretail activityPetroretail activity
Petroretail activity
Bhushan Shetye
 
If bom é if morto
If bom é if mortoIf bom é if morto
If bom é if morto
Mario Mendonça
 
Refactoring sem complicação!
Refactoring sem complicação!Refactoring sem complicação!
Refactoring sem complicação!
Thamara Hessel
 
[Webinar] Refatoração em PHP
[Webinar] Refatoração em PHP[Webinar] Refatoração em PHP
[Webinar] Refatoração em PHP
KingHost - Hospedagem de sites
 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy Code
Adam Culp
 
Sgrio2016 deixando o jenkins fazer o trabalho manual
Sgrio2016   deixando o jenkins fazer o trabalho manualSgrio2016   deixando o jenkins fazer o trabalho manual
Sgrio2016 deixando o jenkins fazer o trabalho manual
Rafael Chiavegatto
 
3 わがまちのプラチナ構想【北九州】pdf
3 わがまちのプラチナ構想【北九州】pdf3 わがまちのプラチナ構想【北九州】pdf
3 わがまちのプラチナ構想【北九州】pdfplatinumhandbook
 
Semiotica de-la-imagen-periodico
Semiotica de-la-imagen-periodicoSemiotica de-la-imagen-periodico
Semiotica de-la-imagen-periodico
Samara Flores
 
Primera actividad
Primera actividadPrimera actividad
Primera actividad
Raúl Iglesias Iglesias
 
Modulo 2
Modulo 2Modulo 2
Refactor case study LAN example
Refactor case study LAN exampleRefactor case study LAN example
Refactor case study LAN example
Tom Mens
 
Virus y vacunas informaticas
Virus y vacunas       informaticasVirus y vacunas       informaticas
Virus y vacunas informaticas
martlaur
 

Destaque (20)

Artesanato de software - Caipira Ágil 2015
Artesanato de software - Caipira Ágil 2015Artesanato de software - Caipira Ágil 2015
Artesanato de software - Caipira Ágil 2015
 
Agile Brazil -Wbma 2014
Agile Brazil -Wbma 2014Agile Brazil -Wbma 2014
Agile Brazil -Wbma 2014
 
Dealing with Legacy PHP Applications
Dealing with Legacy PHP ApplicationsDealing with Legacy PHP Applications
Dealing with Legacy PHP Applications
 
Relatos de uma empresa ágil
Relatos de uma empresa ágilRelatos de uma empresa ágil
Relatos de uma empresa ágil
 
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
 
Vá além com cortana e windows 10
Vá além com cortana e windows 10Vá além com cortana e windows 10
Vá além com cortana e windows 10
 
Petroretail activity
Petroretail activityPetroretail activity
Petroretail activity
 
If bom é if morto
If bom é if mortoIf bom é if morto
If bom é if morto
 
Refactoring sem complicação!
Refactoring sem complicação!Refactoring sem complicação!
Refactoring sem complicação!
 
[Webinar] Refatoração em PHP
[Webinar] Refatoração em PHP[Webinar] Refatoração em PHP
[Webinar] Refatoração em PHP
 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy Code
 
Sgrio2016 deixando o jenkins fazer o trabalho manual
Sgrio2016   deixando o jenkins fazer o trabalho manualSgrio2016   deixando o jenkins fazer o trabalho manual
Sgrio2016 deixando o jenkins fazer o trabalho manual
 
3 わがまちのプラチナ構想【北九州】pdf
3 わがまちのプラチナ構想【北九州】pdf3 わがまちのプラチナ構想【北九州】pdf
3 わがまちのプラチナ構想【北九州】pdf
 
Wagamachi01 01
Wagamachi01 01Wagamachi01 01
Wagamachi01 01
 
Semiotica de-la-imagen-periodico
Semiotica de-la-imagen-periodicoSemiotica de-la-imagen-periodico
Semiotica de-la-imagen-periodico
 
Primera actividad
Primera actividadPrimera actividad
Primera actividad
 
Modulo 2
Modulo 2Modulo 2
Modulo 2
 
Refactor case study LAN example
Refactor case study LAN exampleRefactor case study LAN example
Refactor case study LAN example
 
Virus y vacunas informaticas
Virus y vacunas       informaticasVirus y vacunas       informaticas
Virus y vacunas informaticas
 

Semelhante a O seu código fede e você nem sabia. Ou sabia, mas não o quanto fede!

Sonarqube
SonarqubeSonarqube
Sonarqube
CDS
 
SonarQube
SonarQubeSonarQube
SonarQube
CDS
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002
Cláudio Amaral
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
José Alexandre Macedo
 
Apresentação Executiva
Apresentação ExecutivaApresentação Executiva
Apresentação Executiva
Powerlogic Consultoria e Sistemas
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
Igor Abade
 
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Igor Abade
 
Métricas de Código
Métricas de CódigoMétricas de Código
Métricas de Código
Paulo Cesar Ortins Brito
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Rafael Salerno de Oliveira
 
Engenharia de Software - Unimep/Pronatec - Aula 4
Engenharia de Software - Unimep/Pronatec - Aula 4Engenharia de Software - Unimep/Pronatec - Aula 4
Engenharia de Software - Unimep/Pronatec - Aula 4
André Phillip Bertoletti
 
Aula 1 introducao
Aula 1   introducaoAula 1   introducao
Aula 1 introducao
licardino
 
Aula 1 introdução à engenharia de software1 (1)
Aula 1   introdução à engenharia de software1 (1)Aula 1   introdução à engenharia de software1 (1)
Aula 1 introdução à engenharia de software1 (1)
Tiago Vizoto
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
Cesar Romero
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
Leinylson Fontinele
 
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
 
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Alvaro Brognoli
 
Seu código fede e você nem sabia
Seu código fede e você nem sabiaSeu código fede e você nem sabia
Seu código fede e você nem sabia
Wagner Mendes Voltz Fusca
 
Precisa testar? - Parte 1
Precisa testar? - Parte 1Precisa testar? - Parte 1
Precisa testar? - Parte 1
Fernando Fabricio
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
Otávio Calaça Xavier
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Cris Fidelix
 

Semelhante a O seu código fede e você nem sabia. Ou sabia, mas não o quanto fede! (20)

Sonarqube
SonarqubeSonarqube
Sonarqube
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Apresentação Executiva
Apresentação ExecutivaApresentação Executiva
Apresentação Executiva
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
 
Métricas de Código
Métricas de CódigoMétricas de Código
Métricas de Código
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
Engenharia de Software - Unimep/Pronatec - Aula 4
Engenharia de Software - Unimep/Pronatec - Aula 4Engenharia de Software - Unimep/Pronatec - Aula 4
Engenharia de Software - Unimep/Pronatec - Aula 4
 
Aula 1 introducao
Aula 1   introducaoAula 1   introducao
Aula 1 introducao
 
Aula 1 introdução à engenharia de software1 (1)
Aula 1   introdução à engenharia de software1 (1)Aula 1   introdução à engenharia de software1 (1)
Aula 1 introdução à engenharia de software1 (1)
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
Gestão ágil de projetos de software com Scrum 2.0 e Team Foundation Server e ...
 
Seu código fede e você nem sabia
Seu código fede e você nem sabiaSeu código fede e você nem sabia
Seu código fede e você nem sabia
 
Precisa testar? - Parte 1
Precisa testar? - Parte 1Precisa testar? - Parte 1
Precisa testar? - Parte 1
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 

Mais de Wagner Mendes Voltz Fusca

Como Acabar Com Seu Débito Técnico - Amcom
Como Acabar Com Seu Débito Técnico - AmcomComo Acabar Com Seu Débito Técnico - Amcom
Como Acabar Com Seu Débito Técnico - Amcom
Wagner Mendes Voltz Fusca
 
Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020
Wagner Mendes Voltz Fusca
 
Seu ágil vai falhar!
Seu ágil vai falhar!Seu ágil vai falhar!
Seu ágil vai falhar!
Wagner Mendes Voltz Fusca
 
Seu codigo fede e voce nem sabia - 2020
Seu codigo fede e voce nem sabia - 2020Seu codigo fede e voce nem sabia - 2020
Seu codigo fede e voce nem sabia - 2020
Wagner Mendes Voltz Fusca
 
Management day PUCPR - Agile coach
Management day PUCPR - Agile coachManagement day PUCPR - Agile coach
Management day PUCPR - Agile coach
Wagner Mendes Voltz Fusca
 
Management 3.0 - Redefinindo liderança: Gerenciando o sistema e não as pessoas
Management 3.0 - Redefinindo liderança: Gerenciando o sistema e não as pessoasManagement 3.0 - Redefinindo liderança: Gerenciando o sistema e não as pessoas
Management 3.0 - Redefinindo liderança: Gerenciando o sistema e não as pessoas
Wagner Mendes Voltz Fusca
 
Como acabar com seu débito técnico - Agile Brazil 2019
Como acabar com seu débito técnico - Agile Brazil 2019Como acabar com seu débito técnico - Agile Brazil 2019
Como acabar com seu débito técnico - Agile Brazil 2019
Wagner Mendes Voltz Fusca
 
Como acabar com seu débito técnico - TDC SP 2019 - Trilha XP
Como acabar com seu débito técnico - TDC SP 2019 - Trilha XPComo acabar com seu débito técnico - TDC SP 2019 - Trilha XP
Como acabar com seu débito técnico - TDC SP 2019 - Trilha XP
Wagner Mendes Voltz Fusca
 
Coragem um valor ágil (talvez esquecido)
Coragem um valor ágil (talvez esquecido)Coragem um valor ágil (talvez esquecido)
Coragem um valor ágil (talvez esquecido)
Wagner Mendes Voltz Fusca
 
As 5 disfunções da minha melhor equipe
As 5 disfunções da minha melhor equipeAs 5 disfunções da minha melhor equipe
As 5 disfunções da minha melhor equipe
Wagner Mendes Voltz Fusca
 
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Wagner Mendes Voltz Fusca
 
Agilidade não é para desenvolvedores - Agile Curitiba Conference
Agilidade não é para desenvolvedores - Agile Curitiba ConferenceAgilidade não é para desenvolvedores - Agile Curitiba Conference
Agilidade não é para desenvolvedores - Agile Curitiba Conference
Wagner Mendes Voltz Fusca
 
Metodologia ágil - VIII Semana das Engenharias - Unicesumar
Metodologia ágil - VIII Semana das Engenharias - UnicesumarMetodologia ágil - VIII Semana das Engenharias - Unicesumar
Metodologia ágil - VIII Semana das Engenharias - Unicesumar
Wagner Mendes Voltz Fusca
 
Agilidade NÃO é para desenvolvedores! - Agile Brazil 2018
Agilidade NÃO é para desenvolvedores! - Agile Brazil 2018Agilidade NÃO é para desenvolvedores! - Agile Brazil 2018
Agilidade NÃO é para desenvolvedores! - Agile Brazil 2018
Wagner Mendes Voltz Fusca
 
OWASP Cornucopia - Scrum Gathering Rio 2018
 OWASP Cornucopia - Scrum Gathering Rio 2018 OWASP Cornucopia - Scrum Gathering Rio 2018
OWASP Cornucopia - Scrum Gathering Rio 2018
Wagner Mendes Voltz Fusca
 
Cornucopia - Um game para facilitar o assunto codificação segura
Cornucopia - Um game para facilitar o assunto codificação segura Cornucopia - Um game para facilitar o assunto codificação segura
Cornucopia - Um game para facilitar o assunto codificação segura
Wagner Mendes Voltz Fusca
 
Tips to improve your code review
Tips to improve your code reviewTips to improve your code review
Tips to improve your code review
Wagner Mendes Voltz Fusca
 
Agilidade é para desenvolvedores? TDC Florianópolis
Agilidade é para desenvolvedores? TDC FlorianópolisAgilidade é para desenvolvedores? TDC Florianópolis
Agilidade é para desenvolvedores? TDC Florianópolis
Wagner Mendes Voltz Fusca
 
Agilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da AgilidadeAgilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da Agilidade
Wagner Mendes Voltz Fusca
 
Projetos ágeis falham??
Projetos ágeis falham??Projetos ágeis falham??
Projetos ágeis falham??
Wagner Mendes Voltz Fusca
 

Mais de Wagner Mendes Voltz Fusca (20)

Como Acabar Com Seu Débito Técnico - Amcom
Como Acabar Com Seu Débito Técnico - AmcomComo Acabar Com Seu Débito Técnico - Amcom
Como Acabar Com Seu Débito Técnico - Amcom
 
Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020
 
Seu ágil vai falhar!
Seu ágil vai falhar!Seu ágil vai falhar!
Seu ágil vai falhar!
 
Seu codigo fede e voce nem sabia - 2020
Seu codigo fede e voce nem sabia - 2020Seu codigo fede e voce nem sabia - 2020
Seu codigo fede e voce nem sabia - 2020
 
Management day PUCPR - Agile coach
Management day PUCPR - Agile coachManagement day PUCPR - Agile coach
Management day PUCPR - Agile coach
 
Management 3.0 - Redefinindo liderança: Gerenciando o sistema e não as pessoas
Management 3.0 - Redefinindo liderança: Gerenciando o sistema e não as pessoasManagement 3.0 - Redefinindo liderança: Gerenciando o sistema e não as pessoas
Management 3.0 - Redefinindo liderança: Gerenciando o sistema e não as pessoas
 
Como acabar com seu débito técnico - Agile Brazil 2019
Como acabar com seu débito técnico - Agile Brazil 2019Como acabar com seu débito técnico - Agile Brazil 2019
Como acabar com seu débito técnico - Agile Brazil 2019
 
Como acabar com seu débito técnico - TDC SP 2019 - Trilha XP
Como acabar com seu débito técnico - TDC SP 2019 - Trilha XPComo acabar com seu débito técnico - TDC SP 2019 - Trilha XP
Como acabar com seu débito técnico - TDC SP 2019 - Trilha XP
 
Coragem um valor ágil (talvez esquecido)
Coragem um valor ágil (talvez esquecido)Coragem um valor ágil (talvez esquecido)
Coragem um valor ágil (talvez esquecido)
 
As 5 disfunções da minha melhor equipe
As 5 disfunções da minha melhor equipeAs 5 disfunções da minha melhor equipe
As 5 disfunções da minha melhor equipe
 
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
 
Agilidade não é para desenvolvedores - Agile Curitiba Conference
Agilidade não é para desenvolvedores - Agile Curitiba ConferenceAgilidade não é para desenvolvedores - Agile Curitiba Conference
Agilidade não é para desenvolvedores - Agile Curitiba Conference
 
Metodologia ágil - VIII Semana das Engenharias - Unicesumar
Metodologia ágil - VIII Semana das Engenharias - UnicesumarMetodologia ágil - VIII Semana das Engenharias - Unicesumar
Metodologia ágil - VIII Semana das Engenharias - Unicesumar
 
Agilidade NÃO é para desenvolvedores! - Agile Brazil 2018
Agilidade NÃO é para desenvolvedores! - Agile Brazil 2018Agilidade NÃO é para desenvolvedores! - Agile Brazil 2018
Agilidade NÃO é para desenvolvedores! - Agile Brazil 2018
 
OWASP Cornucopia - Scrum Gathering Rio 2018
 OWASP Cornucopia - Scrum Gathering Rio 2018 OWASP Cornucopia - Scrum Gathering Rio 2018
OWASP Cornucopia - Scrum Gathering Rio 2018
 
Cornucopia - Um game para facilitar o assunto codificação segura
Cornucopia - Um game para facilitar o assunto codificação segura Cornucopia - Um game para facilitar o assunto codificação segura
Cornucopia - Um game para facilitar o assunto codificação segura
 
Tips to improve your code review
Tips to improve your code reviewTips to improve your code review
Tips to improve your code review
 
Agilidade é para desenvolvedores? TDC Florianópolis
Agilidade é para desenvolvedores? TDC FlorianópolisAgilidade é para desenvolvedores? TDC Florianópolis
Agilidade é para desenvolvedores? TDC Florianópolis
 
Agilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da AgilidadeAgilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da Agilidade
 
Projetos ágeis falham??
Projetos ágeis falham??Projetos ágeis falham??
Projetos ágeis falham??
 

O seu código fede e você nem sabia. Ou sabia, mas não o quanto fede!

  • 1. O seu código fede e você nem sabia. Ou sabia, mas não o quanto fede! Wagner Mendes Voltz - FUSCA
  • 2. Agenda • Apresentação • Definição dívida técnica • Definição code smells • Como identificar • Como prevenir • Como corrigir
  • 3. Apresentação • Curitibano e paranista! • Formado em Tecnologia em Informática – UFPR – 2005 • Especialização em Gestão da informação – FAE Business School • Desenvolvedor de sistemas desde 2005 • Java, Android, Agile • CSM – Certified ScrumMaster
  • 4. • Atualmente gerente de projetos/scrum master • twitter.com/tiofusca • wagnerfusca@gmail.com • http://www.devparana.org/
  • 5.
  • 6. Dívida técnica Toda e qualquer alteração no código fonte, realizada por um time de desenvolvimento de software que não gera melhoria em sua qualidade
  • 7. Dívida técnica “entrar num ambiente sujo e deixá-lo do mesmo jeito ou pior”
  • 8. Dívida técnica Ao manter o “ambiente sujo”, acúmulo juros.
  • 9. Dívida técnica “A dívida técnica é similar à dívida financeira. Assim como a dívida financeira, a dívida técnica exige o pagamento de juros. Estes vem na forma de esforço extra, que devem ser pagos em desenvolvimentos futuros por conta da escolha de um design mais rápido e de baixa qualidade. Nós podemos optar por continuar pagando estes juros ou quitar de uma vez a dívida fazendo uma refatoração, transformando um design de baixa qualidade em um design melhor. Apesar dos custos para saldar a dívida, ganhamos reduzindo os juros no futuro.” Martin Fowler
  • 11. Divida técnica - sintomas • Perda de satisfação do cliente quanto a primeira entrega • Demora para entregar o software • Atrasos nas entregas • Erros de estimativas com frequência • Entrega de software com bug em produção
  • 12. Divida técnica - sintomas • Projeto engessado • Time frustrado • Cobertura de testes fraca • Suíte de testes que demora para ser executada • //TODO E //FIXME • Problemas de comunicação na equipe
  • 13. Code Smells Definição: sintoma de que algo no código pode estar errado. Geralmente indica a necessidade de um refactoring ou de alteração estrutural da aplicação.
  • 14. Exemplo de codes smells • Comentários • Método longo • Classe longa • Longa lista de parâmetros • Código duplicado • Complexidade condicional • Nomes inconsistentes • Obsessão primitiva
  • 17.
  • 18. Dois indicadores simples • Complexidade ciclomática (condicional) – mede a quantidade de caminhos de execução independentes a partir de um código fonte • NCSS – Determina o numero de linhas que um método deve ter
  • 19. Dinâmica do dois chapéus: Kent Beck Adicionar Funcionalidade Não altera código pré existente Refatorar Não acrescenta funcionalidade
  • 20.
  • 21.