Refatorar é preciso! 2.0

65
Refatorar é Preciso! Uma visão Técnica e Filosófica Daniel Archer PHP Conference 2015 - SP

Transcript of Refatorar é preciso! 2.0

Page 1: Refatorar é preciso! 2.0

Refatorar é Preciso!Uma visão Técnica e Filosófica

Daniel ArcherPHP Conference 2015 - SP

Page 2: Refatorar é preciso! 2.0

Eu sou eu

Não sou vocês...

Page 3: Refatorar é preciso! 2.0

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

Page 4: Refatorar é preciso! 2.0

Trabalhar !== Estudar

Page 5: Refatorar é preciso! 2.0
Page 6: Refatorar é preciso! 2.0

Você escreve bem?

Page 7: Refatorar é preciso! 2.0

Aprendemos a escrever, lendo...

Page 8: Refatorar é preciso! 2.0

Mudança === EvoluçãoPrevalece o mais adaptado

Page 9: Refatorar é preciso! 2.0

Parar no tempo === Extinção

Page 10: Refatorar é preciso! 2.0

Antes do refactoring...

Page 11: Refatorar é preciso! 2.0

77

Page 12: Refatorar é preciso! 2.0

87

Page 13: Refatorar é preciso! 2.0
Page 14: Refatorar é preciso! 2.0

Agora vai!

Page 15: Refatorar é preciso! 2.0

...onde Estamos

● 1972 - C

● 1983 - C++

● 1987 - Pearl

● 1991 - Java

● 1991 - Python

● 1995 - PHP

● 2000 - C#

● 2004 - PHP5

Page 16: Refatorar é preciso! 2.0
Page 17: Refatorar é preciso! 2.0

Ok… chega de teoria

Page 18: Refatorar é preciso! 2.0

Refactoring

Código antigo funciona, mas será que funciona bem?

Page 19: Refatorar é preciso! 2.0

Refactoring

Código antigo funciona, mas será que funciona bem?

Posso reutilizar o meu código neste novo projeto?

Page 20: Refatorar é preciso! 2.0

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?

Page 21: Refatorar é preciso! 2.0

O que eu posso usar?

Page 22: Refatorar é preciso! 2.0

O que eu posso usar?

A melhor ferramenta do mercado…

Page 23: Refatorar é preciso! 2.0

Bom senso!O que eu posso usar?

Page 24: Refatorar é preciso! 2.0

Obrigado!O que eu posso usar?

… ok vamos continuar.

Page 25: Refatorar é preciso! 2.0
Page 26: Refatorar é preciso! 2.0

S.O.L.I.D

Page 27: Refatorar é preciso! 2.0

S.O.L.I.DSingle Responsability

Page 28: Refatorar é preciso! 2.0

S.O.L.I.DOpen/Close Principle

Open for extensions, close for modification.

Page 29: Refatorar é preciso! 2.0

S.O.L.I.DLiskov Substitution

Page 30: Refatorar é preciso! 2.0

S.O.L.I.DInterface Segregation

Page 31: Refatorar é preciso! 2.0

S.O.L.I.DDependency Invertion

Page 32: Refatorar é preciso! 2.0

...tem mais

Page 33: Refatorar é preciso! 2.0

Object Calisthenics

...sim, enorme desse jeito.

Page 34: Refatorar é preciso! 2.0

PHP-FIGPSRs para uma vida melhor… standards

Page 35: Refatorar é preciso! 2.0

Exemplos ...muitos exemplos!

Page 36: Refatorar é preciso! 2.0
Page 37: Refatorar é preciso! 2.0

“Refactoring changes the programs in small steps. If you make a mistake, it is

easy to find the bug.”- Kent Beck

Page 38: Refatorar é preciso! 2.0

[exemplo 1 - Primeiros passos]

Page 39: Refatorar é preciso! 2.0

Refactoring de Código Estruturado

Page 40: Refatorar é preciso! 2.0
Page 41: Refatorar é preciso! 2.0
Page 42: Refatorar é preciso! 2.0
Page 43: Refatorar é preciso! 2.0

https://github.com/sebastianbergmann/phpcpd

Copy / Paste Detector

Page 44: Refatorar é preciso! 2.0

Refactoring de Arquitetura

Page 45: Refatorar é preciso! 2.0
Page 46: Refatorar é preciso! 2.0
Page 47: Refatorar é preciso! 2.0
Page 48: Refatorar é preciso! 2.0

Refactoring de Objetos

Page 49: Refatorar é preciso! 2.0
Page 50: Refatorar é preciso! 2.0
Page 51: Refatorar é preciso! 2.0
Page 52: Refatorar é preciso! 2.0

https://github.com/domnikl/DesignPatternsPHP

Exemplos de Design Patterns em PHP

Page 53: Refatorar é preciso! 2.0

Factory

Page 54: Refatorar é preciso! 2.0
Page 55: Refatorar é preciso! 2.0

Strategy

Page 56: Refatorar é preciso! 2.0
Page 57: Refatorar é preciso! 2.0

Observer

Page 58: Refatorar é preciso! 2.0
Page 59: Refatorar é preciso! 2.0

O que aprendemos até aqui?

Page 60: Refatorar é preciso! 2.0

Siga Padrões

Page 61: Refatorar é preciso! 2.0

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

Page 62: Refatorar é preciso! 2.0

Quanto menor,Melhor!

● Sempre diminua o

acoplamento

● Defina

responsabilidades

● Nomes longos é um

possível excesso de

responsabilidade

Page 63: Refatorar é preciso! 2.0

Eu sou eu

Não sou vocês…

Eu não programo como vocês.

Por isso seguimos padrões.

Page 64: Refatorar é preciso! 2.0

Obrigado![palmas]

Page 65: Refatorar é preciso! 2.0

Contato - Daniel Archer

SlideShare

slideshare.net/danielmarquescramer

Facebook

facebook.com/danielmarquescramer

PHPRS

php-rs.org

PHPRS - Facebook

facebook.com/groups/rselephants