Refatorar é Preciso!
Uma visão Técnica e Filosófica
Daniel Archer
PHP Conference 2015 - SP
Eu sou eu
Não sou vocês...
Eu sou eu
Daniel Archer
● Programador PHP at KingHost
● Zend Certified PHP
● Palestrante
● Grupo de Usuários PHPRS
● Astrônomo Amador
● Estudo PHP há 3 anos
Trabalhar !== Estudar
Você escreve bem?
Aprendemos a escrever, lendo...
Mudança === Evolução
Prevalece o mais adaptado
Parar no tempo === Extinção
Antes do refactoring...
77
87
Agora vai!
...onde Estamos
● 1972 - C
● 1983 - C++
● 1987 - Pearl
● 1991 - Java
● 1991 - Python
● 1995 - PHP
● 2000 - C#
● 2004 - PHP5
Ok… chega de teoria
Refactoring
Código antigo funciona, mas será que funciona bem?
Refactoring
Código antigo funciona, mas será que funciona bem?
Posso reutilizar o meu código neste novo projeto?
Refactoring
Código antigo funciona, mas será que funciona bem?
Posso reutilizar o meu código neste novo projeto?
Outra pessoa consegue ler e entender o meu script?
O que eu posso usar?
O que eu posso usar?
A melhor ferramenta do mercado…
Bom senso!
O que eu posso usar?
Obrigado!
O que eu posso usar?
… ok vamos continuar.
S.O.L.I.D
S.O.L.I.D
Single Responsability
S.O.L.I.D
Open/Close Principle
Open for extensions, close for modification.
S.O.L.I.D
Liskov Substitution
S.O.L.I.D
Interface Segregation
S.O.L.I.D
Dependency Invertion
...tem mais
Object
Calisthenics
...sim, enorme desse jeito.
PHP-FIG
PSRs para uma vida melhor… standards
Exemplos ...muitos exemplos!
“Refactoring changes the programs in
small steps. If you make a mistake, it is
easy to find the bug.”
- Kent Beck
[exemplo 1 - Primeiros passos]
Refactoring de Código Estruturado
https://github.com/sebastianbergmann/phpcpd
Copy / Paste Detector
Refactoring de Arquitetura
Refactoring de Objetos
https://github.com/domnikl/DesignPatternsPHP
Exemplos de Design Patterns em PHP
Factory
Strategy
Observer
O que aprendemos até aqui?
Siga Padrões
Não tenha medo
de reorganizar
● Define um padrão
com a sua equipe
● Siga esses padrões
● Altere o padrão se
ele não se adaptar
ao seu time
Quanto menor,
Melhor!
● Sempre diminua o
acoplamento
● Defina
responsabilidades
● Nomes longos é um
possível excesso de
responsabilidade
Eu sou eu
Não sou vocês…
Eu não programo como vocês.
Por isso seguimos padrões.
Obrigado!
[palmas]
Contato - Daniel Archer
SlideShare
slideshare.net/danielmarquescramer
Facebook
facebook.com/danielmarquescramer
PHPRS
php-rs.org
PHPRS - Facebook
facebook.com/groups/rselephants

Refatorar é preciso! 2.0