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• [email protected]• 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
Refatorar não é corrigir bug!!!!
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 FuncionalidadeNão altera código pré existente
RefatorarNão acrescenta funcionalidade
Dúvidas?
• twitter.com/tiofusca• [email protected]• http://www.devparana.org/