SlideShare a Scribd company logo
1 of 50
Download to read offline
CÓDIGO COM QUALIDADE É O OBJETIVO
Jakeliny Gracielly
Solutions Leader e Community Manager | FCAMARA
Comunidades
@jakelinygracielly
https://jakeliny.com.br
Contato
BAD SMELL
@jakelinygracielly https://jakeliny.com.br
BAD SMELL
● Refatoração
● Classes ou métodos longos
● Código Duplicado
CLASSES OU MÉTODOS LONGOS
@jakelinygracielly https://jakeliny.com.br
CLASSES OU MÉTODOS LONGOS
● Excesso de atributos
● “Coisas de Mais”
● Métodos centralizadores
● Extract Class / Extract Method
@jakelinygracielly https://jakeliny.com.br
CLASSES OU MÉTODOS LONGOS
@jakelinygracielly https://jakeliny.com.br
CLASSES OU MÉTODOS LONGOS
@jakelinygracielly https://jakeliny.com.br
CLASSES OU MÉTODOS LONGOS
CÓDIGO DUPLICADO
@jakelinygracielly https://jakeliny.com.br
CÓDIGO DUPLICADO
● Mesma ação em vários lugares
● Extract Method / Form template method
● PHP MD
@jakelinygracielly https://jakeliny.com.br
CÓDIGO DUPLICADO
@jakelinygracielly https://jakeliny.com.br
CÓDIGO DUPLICADO
FEATURE ENVY
@jakelinygracielly https://jakeliny.com.br
FEATURE ENVY
● Método com atributo de outra classe
● Move Method / Inline Class
DIVERGENT CHANGE / SHOTGUN SURGERY
@jakelinygracielly https://jakeliny.com.br
DIVERGENT CHANGE / SHOTGUN SURGERY
● DIVERGENT CHANGE
● Alterações por razões distintas
● Extract Class
● SHOTGUN SURGERY
● “Efeito Borboleta”
● Aparece na evolução do software
● Move Method / Move Field
COMMENTS
@jakelinygracielly https://jakeliny.com.br
COMMENTS
● “Desodorante”
● 1000/5000 code
● Nomes não expressivos
● Extract Method / Rename Method/Field
CÓDIGO MORTO
@jakelinygracielly https://jakeliny.com.br
CÓDIGO MORTO
● Não tenha “dó”
● Faça buscas por métodos
● Lembre que o Git existe
COMPLEXIDADE CICLOMÁTICA
@jakelinygracielly https://jakeliny.com.br
COMPLEXIDADE CICLOMÁTICA
● Medir complexidade
● Caminhos independentes
● Condicionais / Loops
@jakelinygracielly https://jakeliny.com.br
if ($numero > 10)
else if ($numero < 30)
else
COMPLEXIDADE CICLOMÁTICA
@jakelinygracielly https://jakeliny.com.br
1-10 Método simples
11-20 Método complexo
21-50 Método muito complexo
51-N Método bastante instável.
COMPLEXIDADE CICLOMÁTICA
@jakelinygracielly https://jakeliny.com.br
COMPLEXIDADE CICLOMÁTICA
@jakelinygracielly https://jakeliny.com.br
COMPLEXIDADE CICLOMÁTICA
@jakelinygracielly https://jakeliny.com.br
COMPLEXIDADE CICLOMÁTICA
● If / Else
● Try / Catch
● Switch
● For / While / Foreach
● Recursividade / interação
TDD
@jakelinygracielly https://jakeliny.com.br
TDD
● “Programmers are paid to develop code, not
to write a unit test or comments.”
● #sextou
● No Bug
S.O.L.I.D
@jakelinygracielly https://jakeliny.com.br
S.O.L.I.D
● Fácil entendimento
● Baixo acoplamento
● Fácil Manutenção
● Reaproveitamento de código
@jakelinygracielly https://jakeliny.com.br
S.O.L.I.D
S. Single Responsibility Principle
S.
@jakelinygracielly https://jakeliny.com.br
S.O.L.I.D
S. Single Responsibility Principle
O. Open Closed Principle
S.O
@jakelinygracielly https://jakeliny.com.br
S.O.L.I.D
S. Single Responsibility Principle
O. Open Closed Principle
L. Liskov's Substitution Principle
S.O.L
@jakelinygracielly https://jakeliny.com.br
S.O.L.I.D
S. Single Responsibility Principle
O. Open Closed Principle
L. Liskov's Substitution Principle
I. Interface Segregation Principle
S.O.L.I
@jakelinygracielly https://jakeliny.com.br
S.O.L.I.D
S. Single Responsibility Principle
O. Open Closed Principle
L. Liskov's Substitution Principle
I. Interface Segregation Principle
D. Dependency Inversion Principle S.O.L.I.D
E SEU CÓDIGO PHP
@jakelinygracielly https://jakeliny.com.br
E SEU CÓDIGO PHP
● mysqli_* ou PDO
● Performance no código
● Conheça bem a arquitetura do banco
● Novidades PHP
COMANDO USE
@jakelinygracielly https://jakeliny.com.br
COMANDO USE
@jakelinygracielly https://jakeliny.com.br
COMANDO USE
SEGURANÇA
@jakelinygracielly https://jakeliny.com.br
SEGURANÇA
● SQL Injection
● eval
● Módulos não utilizados
● habilitar log
● security.ini
@jakelinygracielly https://jakeliny.com.br
● file_uploads=Off
● expose_php=Off
● display_errors=Off
SECURITY.INI
PARA FINALIZAR...
@jakelinygracielly https://jakeliny.com.br
● PHP MD
● PHP Code Sniffer
Catálogo de Martin Fowler:
https://refactoring.com/catalog/
Ferramentas
@jakelinygracielly https://jakeliny.com.br
CÓDIGO COM QUALIDADE
1. KISS – Keep It Simple, Stupid!
2. DRY – Don’t Repeat Yourself!
3. Não existe código perfeito, mas é
possível ter código coeso!
4. Por que está comentando?
5. Refatoração é importante
6. Avaliar o débito do código
7. Acordo com a equipe
8. Evoluir como desenvolvedor
@jakelinygracielly https://jakeliny.com.br
REFERÊNCIAS
https://refactoring.guru/smells/
https://martinfowler.com/books/refactoring.html
https://fernandofranzini.wordpress.com/category/tdd/
https://javarevisited.blogspot.com/2017/01/Top-10-excuses-programmers-giv
es-to-avoid-unit-testing.html
https://medium.com/thiago-aragao/solid-princ%C3%ADpios-da-programa%C3
%A7%C3%A3o-orientada-a-objetos-ba7e31d8fb25
Obrigada! Dúvidas?
Comunidades
@jakelinygracielly
https://jakeliny.com.br
Contato

More Related Content

More from Jakeliny Gracielly

Iniciando com NodeJS - API Restful
Iniciando com NodeJS  - API RestfulIniciando com NodeJS  - API Restful
Iniciando com NodeJS - API RestfulJakeliny Gracielly
 
Odin - Um framework WordPress que chuta bundas
Odin - Um framework WordPress que chuta bundasOdin - Um framework WordPress que chuta bundas
Odin - Um framework WordPress que chuta bundasJakeliny Gracielly
 
Complexidade Ciclomática - 7Master
Complexidade Ciclomática - 7MasterComplexidade Ciclomática - 7Master
Complexidade Ciclomática - 7MasterJakeliny Gracielly
 
Customização de sites com child theme - WordPress
Customização de sites com child theme - WordPressCustomização de sites com child theme - WordPress
Customização de sites com child theme - WordPressJakeliny Gracielly
 
Bitcoin & Cryptocoins, vamos começar?
Bitcoin & Cryptocoins, vamos começar?Bitcoin & Cryptocoins, vamos começar?
Bitcoin & Cryptocoins, vamos começar?Jakeliny Gracielly
 
Crie sites WordPress sem programar
Crie sites WordPress sem programarCrie sites WordPress sem programar
Crie sites WordPress sem programarJakeliny Gracielly
 
Configure um servidor cloud com SSL e WP-CLI
Configure um servidor cloud com SSL e WP-CLIConfigure um servidor cloud com SSL e WP-CLI
Configure um servidor cloud com SSL e WP-CLIJakeliny Gracielly
 

More from Jakeliny Gracielly (7)

Iniciando com NodeJS - API Restful
Iniciando com NodeJS  - API RestfulIniciando com NodeJS  - API Restful
Iniciando com NodeJS - API Restful
 
Odin - Um framework WordPress que chuta bundas
Odin - Um framework WordPress que chuta bundasOdin - Um framework WordPress que chuta bundas
Odin - Um framework WordPress que chuta bundas
 
Complexidade Ciclomática - 7Master
Complexidade Ciclomática - 7MasterComplexidade Ciclomática - 7Master
Complexidade Ciclomática - 7Master
 
Customização de sites com child theme - WordPress
Customização de sites com child theme - WordPressCustomização de sites com child theme - WordPress
Customização de sites com child theme - WordPress
 
Bitcoin & Cryptocoins, vamos começar?
Bitcoin & Cryptocoins, vamos começar?Bitcoin & Cryptocoins, vamos começar?
Bitcoin & Cryptocoins, vamos começar?
 
Crie sites WordPress sem programar
Crie sites WordPress sem programarCrie sites WordPress sem programar
Crie sites WordPress sem programar
 
Configure um servidor cloud com SSL e WP-CLI
Configure um servidor cloud com SSL e WP-CLIConfigure um servidor cloud com SSL e WP-CLI
Configure um servidor cloud com SSL e WP-CLI
 

Código Qualidade Objetivo PHP Refatoração