SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PPTX
DevTalk Zoox 04/2016
PDF
qualidade de código: boas práticas, princípios e padrões
PDF
Qualidade de código
PDF
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
PDF
Programando Melhor - Flisol
PPTX
Clean Code e Object Calisthenics - Aplicados no PHP
PPTX
Aprensentacao oo-trincheiras
PPTX
Code Smells
DevTalk Zoox 04/2016
qualidade de código: boas práticas, princípios e padrões
Qualidade de código
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Programando Melhor - Flisol
Clean Code e Object Calisthenics - Aplicados no PHP
Aprensentacao oo-trincheiras
Code Smells

Semelhante a Código com qualidade é o objetivo (20)

PDF
Boas práticas no desenvolvimento de software
PDF
Clean Code
PDF
Refatorando tudo! [Agile brazil 2017]
PPTX
Clean Code - Fork In Tuba
PPTX
PPTX
PPTX
Potencializando a qualidade de código
PDF
Clean Code na Prática
KEY
Seus testes estão gritando. Você está ouvindo?
PPTX
Código limpo
PDF
Clean code part 2
PDF
Clean code
PDF
Refatoração
PDF
clean code
PDF
Php Conf08 Refactoring
PPTX
Clean Code
PDF
ESP204 - Cap. 9 - Refactoring.pdf
PDF
Refatoração - aquela caprichada no código
PDF
Clean code v3
PDF
Removendo o cheiro ruim do seu código - SoLiSC 2011
Boas práticas no desenvolvimento de software
Clean Code
Refatorando tudo! [Agile brazil 2017]
Clean Code - Fork In Tuba
Potencializando a qualidade de código
Clean Code na Prática
Seus testes estão gritando. Você está ouvindo?
Código limpo
Clean code part 2
Clean code
Refatoração
clean code
Php Conf08 Refactoring
Clean Code
ESP204 - Cap. 9 - Refactoring.pdf
Refatoração - aquela caprichada no código
Clean code v3
Removendo o cheiro ruim do seu código - SoLiSC 2011
Anúncio

Mais de Jakeliny Gracielly (15)

PDF
Comunidades e hackathons: qual seus impactos?
PPTX
Soft skills e planejamento
PDF
Front-end e Javascript: quais habilidades preciso para me tornar um bom dev #...
PDF
Aprenda NodeJS gerenciando seus Crushs #CPBR12
PDF
APIs Rest com NodeJS
PDF
Entenda os desenvolvedores e tenha um setor mais inovador
PDF
Criando um web service RESTful em NodeJS
PDF
Desenvolva temas como um viking - ODIN framework
PDF
Iniciando com NodeJS - API Restful
PDF
Odin - Um framework WordPress que chuta bundas
PDF
Complexidade Ciclomática - 7Master
PDF
Customização de sites com child theme - WordPress
PDF
Bitcoin & Cryptocoins, vamos começar?
PDF
Crie sites WordPress sem programar
PPTX
Configure um servidor cloud com SSL e WP-CLI
Comunidades e hackathons: qual seus impactos?
Soft skills e planejamento
Front-end e Javascript: quais habilidades preciso para me tornar um bom dev #...
Aprenda NodeJS gerenciando seus Crushs #CPBR12
APIs Rest com NodeJS
Entenda os desenvolvedores e tenha um setor mais inovador
Criando um web service RESTful em NodeJS
Desenvolva temas como um viking - ODIN framework
Iniciando com NodeJS - API Restful
Odin - Um framework WordPress que chuta bundas
Complexidade Ciclomática - 7Master
Customização de sites com child theme - WordPress
Bitcoin & Cryptocoins, vamos começar?
Crie sites WordPress sem programar
Configure um servidor cloud com SSL e WP-CLI
Anúncio

Último (11)

PPTX
Utilizando code blockes por andre backes
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Jira Software projetos completos com scrum
PPTX
Eng. Software - pontos essenciais para o início
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPT
Conceitos básicos de Redes Neurais Artificiais
Utilizando code blockes por andre backes
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Manejo integrado de pragas na cultura do algodão
Tipos de servidor em redes de computador.pptx
Jira Software projetos completos com scrum
Eng. Software - pontos essenciais para o início
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Viasol Energia Solar -Soluções para geração e economia de energia
Conceitos básicos de Redes Neurais Artificiais

Código com qualidade é o objetivo