Qualidade de Código:
Um caminho necessário.
Marcela Godoy
PHPSP+Talks (Fevereiro/2019)
Marcela Godoy
Coorganizadora do PHPSP Campinas
Incentivadora de Mulheres na Tecnologia
❤️📖☕
[@magodoy88]
PHPWomen Evangelist
Desenvolvedora back-end 💙 PHP
O que é Qualidade de Código?
Como definir?
Eu não sei, mas...
"Eu sei o que NÃO é Qualidade de Código."
Aquele código que dá medo e atrasa a nossa vida.
(Sendo assim...)
Qualidade de Código é a aplicação de boas práticas e eliminação de código morto, gerando redução de bugs e facilidade de manutenção."
(Traduzindo...)
É o código que me deixa dormir cedo todo dia e tira o pé da minha cerveja na sexta-feira!"
Qualidade de Código como Ecossistema
Padrões e Princípios de Desenvolvimento
Testes
Ferramentas Auxiliares
Cultura de Desenvolvimento
Qualidade de Código
Padrões e Princípios de Desenvolvimento
Utilize nomes de classes, métodos, variáveis bem definidos
Crie comentários pontuais e informativos
Um bom código não precisa ser explicado através de comentários
Remova o Código não utilizado
"Eu _______, juro jamais comentar um trecho de código sem uso, porque poderá ser útil um dia.
Para isso usarei o Controle de Versão."
Utilize o S.O.L.I.D.
Single Responsibility
Open Closed
Liskov Substitution
Interface Segregation
Dependency Inversion
Single Responsability
(Princípio da Responsabilidade Única)
S.O.L.I.D.
Uma classe deve ter uma, e apenas uma, razão para mudar.
Minha classe tem as informações do cliente e salva o mesmo no banco de dados.
Open - Closed
(Princípio do Aberto-Fechado)
S.O.L.I.D.
Você deve ser capaz de extender o comportamento de uma classe, sem modificá-la
Liskov Substitution
(Princípio da Substituição de Liskov)
S.O.L.I.D.
Se q(x) é uma propriedade demonstrável dos objetos x de tipo T. Então q(y) deve ser verdadeiro para objetos y de tipo S onde S é um subtipo de T."
Classes derivadas podem ser substituídas por classes bases
Interface Segregation
(Princípio da Segregação de Interface)
S.O.L.I.D.
Muitas interfaces específicas são melhores que uma única interface
Dependency Invertion
(Princípio da Inversão de Dependência)
S.O.L.I.D.
Dependa de abstrações, não de uma implementação
Testes
(Testes Unitários)
Escrever testes deve ser simples
(Assim como escrever a aplicação)
Fast
Independent
Repeatable
Self-Validating
Timely
O Teste deve executar com rapidez.
F.I.R.S.T.
Os testes não devem depender um dos outros.
F.I.R.S.T.
Deve-se poder repetir os testes em qualquer ambiente.
F.I.R.S.T.
Os testes devem ter uma saída booleana
F.I.R.S.T.
Os testes precisam ser escritos em tempo hábil.
F.I.R.S.T.
Ferramentas Auxiliares
Análise estática de código
Verifica seu código sem executá-lo.
Análise estática de código
1. Por estilo
2. Boas práticas
3. Verificação por bugs
Cultura de Desenvolvimento
Parte humanizada da Qualidade de Código
Pair Programming
(Principalmente em códigos de risco)
Code Review
+
Pull Request
(Aprendizagem e Double Check no código)
Concluindo...
Qualidade de código é melhoria contínua
O mostrado aqui é só 1%
Qualidade de Código não se aprende na teoria
Até a próxima ;)
@magodoy88
magodoycruz@gmail.com
#BoraTrocarIdeia
Qualidade de Código @PHPSP + Talks
By Marcela Godoy Cruz
Qualidade de Código @PHPSP + Talks
- 540