Talk apresentada no evento Devs Cansados (https://evento2020.devscansados.com.br/) no dia 12/11/20.
Nessa talk falo um pouco o que é qualidade de código, métricas interessante para sua base de código.
11. You write readable code because it helps
other people to read your code“
Code Complete, Steve McConnell
Error rate
Comprehensibility
Reviewability
Debuggability
Modifiability
13. git
push
origin
main
--force
Programação em par
Métricas ABC
Testes Automatizados
Padrõesde
Codificação
Baixo acoplamento
Integração Contínua
Cobertura de Testes
Revisão de código
Rastreabilidade de
Exceções
Monitoramento
Testes de Estresse
Testes de Segurança
Débito Técnico
21. ● Os seus testes exercitam o
código implementado?
● Ter cobertura acima de 90%
significa algo?
Cobertura de Testes
Test Coverage, Martin Fowler
22. Métricas ABC
● Atribuição conta quando:
= *= /= %= += <<=
>>= &= ^= ++ --
● Branch conta quando:
Chamada de função
● Condição conta quando:
< > <= >= == !=
else case
23. ● É um TODO?
TODO
Falta de Coesão nos métodos (LCOM)
24. ● Quantas responsabilidades
uma classe possui
● Getter e setter contam?
● É confiável? Devo utilizar?
Falta de Coesão nos métodos (LCOM)
25. ● Quantos caminhos seu código
pode percorrer?
● Como reduzir a complexidade
ciclomática?
● Como e quando utilizar?
Complexidade Ciclomática
26. is a tool that analyzes source code to flag
programming errors, bugs, stylistic errors,
and suspicious constructs
- Wikipedia
O que é um linter?
“
27. Homoiconicidade
● O código usado para expressar o
programa é escrito usando as
estruturas de dados daquela
linguagem
● Exemplo: Família de linguagens Lisp
(Common Lisp, Scheme) ou Clojure
28. Abstract Syntax Tree (AST)
● Nos diz como as expressões são
representadas
● Representação interna do nosso
código
30. ● Complexidade Ciclomática
● Estilo e padrões de Codificação
● Performance
● Trechos de código não-utilizado
● Relatórios
● Pacotes/dependências desatualizadas
● Código sem cobertura de testes
● Detector de números mágicos
O que um Linter pode verificar?
42. Referências
● SourceLevel no Devs Cansados
● Code Complete: A Practical Handbook of Software Construction
● Is High Quality Software Worth the Cost?
● Decoding Code Review and Pull Requests
● 10 items to check before assigning a Pull Request to someone
● Martin Fowler: Test Coverage
● Awesome Linters repository
● JavaScript: ESLint
● JavaScript: Prettier