SlideShare uma empresa Scribd logo
1 de 10
Refatoração básica e obrigatória
Denilson Telaroli
Março / 2014
Oque é Refatoração?
● Processo de restruturação de código-fonte
existente (Code refactoring – Wikipedia)
● Intimamente ligado a Padrões de Projetos
Objetivos
● Legibilidade
● Manutenibilidade
● Reaproveitamento
Sintomas de quando aplicar
● Precisou copiar/colar código
● Abriu um código alheio e não entendeu o que
faz
● Muitos blocos/encadeamentos condicionais
● Identificou linhas de código iguais
● Identificou linhas de código parecidas,
mudando apenas os valores de dados
Views
● Expressões com valores
– Dificultam a manutenção
– Pode ser substituido por helper
– Refatoração: Substituir valor temporário por consulta
Views
● Regras de view complexas
– Bad smell mais comum e normalmente são espalhados pelos sistemas
– Força o desenvolvedor a conhecer toda a api (inverso de encapsulamento)
– Podem ser traduzidas em palavras que refletem regras de negócio
– Normalmente podem ser substituidas por helpers
– Refatoração: Extrair método
Classes
● Extrair função
– Uma função deve ter uma e somente uma operação
Classes
● Injeção de parametros
– Serve pra funções/métodos e construtores
– O problema é mais grave em APIs com DI
– Refatoração: Introduzir objeto parâmetro (facade)
● No Ruby é possível usar hash para o mesmo propósito, evitando a classe facade.
Classes
● Introduzir parâmetro
Classes
● Introduzir parâmetro

Mais conteúdo relacionado

Mais procurados

Mais procurados (6)

Refactoring to patterns
Refactoring to patternsRefactoring to patterns
Refactoring to patterns
 
Aula10 -PHP
Aula10 -PHPAula10 -PHP
Aula10 -PHP
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Desenvolvimento web e PHP
Desenvolvimento web e PHPDesenvolvimento web e PHP
Desenvolvimento web e PHP
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
 

Destaque

Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de DadosFabrízio Mello
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de DadosWildtech
 
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosPROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosFabrízio Mello
 
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Carlos Eduardo
 
qualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesqualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesedgarddavidson.com
 
Refactoring for Software Design Smells: Managing Technical Debt
Refactoring for Software Design Smells: Managing Technical DebtRefactoring for Software Design Smells: Managing Technical Debt
Refactoring for Software Design Smells: Managing Technical DebtTushar Sharma
 

Destaque (7)

Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de Dados
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados
 
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosPROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
 
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
 
qualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesqualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrões
 
Refactoring for Software Design Smells: Managing Technical Debt
Refactoring for Software Design Smells: Managing Technical DebtRefactoring for Software Design Smells: Managing Technical Debt
Refactoring for Software Design Smells: Managing Technical Debt
 
Design Smells
Design SmellsDesign Smells
Design Smells
 

Semelhante a Refatoração básica e obrigatória

Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Vinicius Pulgatti
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Diego Rosa
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Introdução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisIntrodução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisMichel Graciano
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoBonoBee
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
PHP SC Conf 2014 - PHP Essentials
PHP SC Conf 2014 - PHP EssentialsPHP SC Conf 2014 - PHP Essentials
PHP SC Conf 2014 - PHP EssentialsMaykon Meier
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptAndre Baltieri
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Refatoração de código Python
Refatoração de código PythonRefatoração de código Python
Refatoração de código Pythondiogobaeder
 
Framework PHP Zend e MVC
Framework PHP Zend e MVCFramework PHP Zend e MVC
Framework PHP Zend e MVCEduardo Greco
 

Semelhante a Refatoração básica e obrigatória (20)

Frameworks PHP @edgarsandi
Frameworks PHP @edgarsandiFrameworks PHP @edgarsandi
Frameworks PHP @edgarsandi
 
Code Review
Code ReviewCode Review
Code Review
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014
 
Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Introdução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisIntrodução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reais
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do código
 
Apres s4
Apres s4 Apres s4
Apres s4
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
PHP SC Conf 2014 - PHP Essentials
PHP SC Conf 2014 - PHP EssentialsPHP SC Conf 2014 - PHP Essentials
PHP SC Conf 2014 - PHP Essentials
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScript
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Refatoração de código Python
Refatoração de código PythonRefatoração de código Python
Refatoração de código Python
 
Framework PHP Zend e MVC
Framework PHP Zend e MVCFramework PHP Zend e MVC
Framework PHP Zend e MVC
 
10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf
 

Refatoração básica e obrigatória

  • 1. Refatoração básica e obrigatória Denilson Telaroli Março / 2014
  • 2. Oque é Refatoração? ● Processo de restruturação de código-fonte existente (Code refactoring – Wikipedia) ● Intimamente ligado a Padrões de Projetos
  • 4. Sintomas de quando aplicar ● Precisou copiar/colar código ● Abriu um código alheio e não entendeu o que faz ● Muitos blocos/encadeamentos condicionais ● Identificou linhas de código iguais ● Identificou linhas de código parecidas, mudando apenas os valores de dados
  • 5. Views ● Expressões com valores – Dificultam a manutenção – Pode ser substituido por helper – Refatoração: Substituir valor temporário por consulta
  • 6. Views ● Regras de view complexas – Bad smell mais comum e normalmente são espalhados pelos sistemas – Força o desenvolvedor a conhecer toda a api (inverso de encapsulamento) – Podem ser traduzidas em palavras que refletem regras de negócio – Normalmente podem ser substituidas por helpers – Refatoração: Extrair método
  • 7. Classes ● Extrair função – Uma função deve ter uma e somente uma operação
  • 8. Classes ● Injeção de parametros – Serve pra funções/métodos e construtores – O problema é mais grave em APIs com DI – Refatoração: Introduzir objeto parâmetro (facade) ● No Ruby é possível usar hash para o mesmo propósito, evitando a classe facade.