refatorar é preciso. palestra tdc 2014
DESCRIPTION
Palestra apresentada sobre Refatoração utilizando linguagem PHP, abordando de forma prática a refatoração em projetos orientados a objeto ou estruturado. Além de clean code e design patterns.TRANSCRIPT
Globalcode – Open4education
Refatorar é Preciso!
Daniel Archer
Globalcode – Open4education
Quem vos fala
Daniel Archer
Formado em Análise de Sistemas
Programador PHP há 5 anos
E eu também escrevo código Ruim...
Globalcode – Open4education
Quem aqui escreve um bom código?
Globalcode – Open4education
Refactoring
Refactoring: a change made to the internal structure of software to make it easier to understand and cheaper to
modify without changing its observable behavior.
• Martin Fowler
Globalcode – Open4education
Refactoring
Globalcode – Open4education
Problemas Enfrentados
Dificuldade de Entendimento
Alto acoplamento
Manutenção perigosa
Produtividade reduzida
Globalcode – Open4education
Ferramentas
Clean Code
Object Calisthenics
Princípios SOLID
Design Patterns
Globalcode – Open4education
Conceitos Básicos
Clean Code
Clean code can be read, and enhanced by a
developer other than its original author. (Dave A. Thomas, OTI Founder)
Clean code is simple and direct(Grady Booch, author of Object Oriented Analysis and Design with Applications)
Globalcode – Open4education
Globalcode – Open4education
Conceitos Básicos
Object Calisthenic
Um nível de indentação por método
Não utilize else
Encapsule os tipos primitivos
Apenas um -> por linha
Não Abrevie
Mantenha suas classes Pequenas
Limite o número de atributos (2~5)
Utilize coleções
Use Getters e Setters
Globalcode – Open4education
Conceitos Básicos
Princípios SOLID
S ingle Responsability
O pen / Closed
L iskov Subtitution
I nterface Segregation
D ependency Injection
Globalcode – Open4education
Vamos ver na prática...
Como identificar e tomar a melhor decisão.
Globalcode – Open4education
Refatoração - Interna
Mantenha a mesma interface
Sinalize métodos depreciados
Teste
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Refatoração - Estruturada
Nem sempre teremos um código minimamente orientado a objetos
Mapeie as relaçõesProcure por dependências desta página em outros arquivos
Agrupe as Classes em Namespaces ou Pastas (v.5.2-)
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Refatoração - Diretórios
Defina qual o objetivo final
Documente o que for alterado
Altere apenas o necessário
Não tenha pressa
Defina Etapas
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Refatoração - Objetos
Inicie pelos métodos de menor complexidade
Informe a equipe sobre a mudança na interface de alguma classe.
Siga os padrões especificados
Dica de ouro: converse com a sua equipe antes.
Globalcode – Open4education
Ouça as opiniões
Mesmo dentro de um grupo de desenvolvedores, dependemos da aceitação da equipe para que as mudanças sejam bem sucedidas.
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Esqueça o padrão Singleton
A maior parte das atuais atribuições do padrão singletonestá relacionada a problemas no design
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Acredite em outras ferramentas.Reuse!
Não tente reinventar a roda
Globalcode – Open4education
Globalcode – Open4education