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