SlideShare uma empresa Scribd logo
1 de 14
Refatorações
Altamir
Renan
Extract Interface
• Diversos clientes usam o mesmo subconjunto da
interface de uma classe ou duas classes tem parte de suas
interfaces em comum.
 Extraia o subconjunto para uma interface.
• Motivação:
▫ Somente parte da interface de uma classe faz sentido para um
grupo de clientes
▫ Uma classe tem de trabalhar com qualquer classe que trate um
grupo de requisições
▫ Interfaces são uma boa solução quando uma classe tem papéis
distintos em diferentes situações.
Inline Method
• A implementação de um método é tão clara
quanto o nome do método. Substitua a
chamada ao método pela sua implementação.
• Motivação:
▫ Bom para eliminar indireção desnecessária. Se
você tem um grupo de métodos mal organizados,
aplique Inline Method em todos eles seguido de
uns bons Extract Methods.
int bandeiradaDoTaxi (int hora) {
return (depoisDas22Horas (hora)) ? 2 : 1);
}
int depoisDas22Horas (int hora) {
return hora > 22;
}
//REFATORADO
int bandeiradaDoTaxi (int hora) {
return (hora > 22) ? 2 : 1);
}
Extract Superclass
• Duas classes apresentam características semelhantes.
• Motivação:
▫ Código duplicado é um dos principais Bad Smells em
sistemas. Se você código duplicado em vários lugares,
então, quando chega a hora de mudar, você tem mais coisas
para mudar do que você deveria.
▫ Uma forma de código duplicado é ter duas classes que
fazem coisas semelhantes, da mesma forma, ou coisas
semelhantes de diferentes maneiras. Objetos fornecem um
mecanismo embutido para simplificar esta situação com a
herança.
▫ No entanto, muitas vezes você não notara as semelhanças
até ter criado algumas classes, em que você precisa criar a
estrutura de herança mais tarde.
Extract Subclass
• O principal motivo para o uso é a constatação de
que a classe tem um tipo comportamento para
algumas instâncias da classe e não para outros.
Às vezes, isso é sinalizado por um tipo de código,
em que você pode usar Replace Type Code with
Subclasses ou Replace Type Code with
State/Strategy.
Pull UP Field
• A superclasse e a subclasse têm os mesmos
atributos (field). Mova os atributos repetidos para a
superclasse.
• Motivação:
▫ Subclasses desenvolvidas independentemente umas
das outras, ou após refatoração, podem ter
características (features) duplicadas. Atributos podem
ser duplicados. Estes não necessariamente têm o
mesmo nome em todas as subclasses. A forma de
eterminar se tal acontece é verificar como os atributos
são usados por outros métodos. Se eles são usados da
mesma forma, pode-se generalizá-los.
Refatorações

Mais conteúdo relacionado

Mais procurados

Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)Carlos Santos
 
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a ObjetosBaixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a ObjetosPaulo Vitor
 
Java Day 2011 - Reflection: Maximizando a produtividade em Java
Java Day 2011 - Reflection: Maximizando a produtividade em JavaJava Day 2011 - Reflection: Maximizando a produtividade em Java
Java Day 2011 - Reflection: Maximizando a produtividade em JavaFábio Antonelli
 
Strategy - Padrões de Projeto
Strategy - Padrões de ProjetoStrategy - Padrões de Projeto
Strategy - Padrões de ProjetoEduardo Mendes
 
Curso de C# - Introdução
Curso de C# - IntroduçãoCurso de C# - Introdução
Curso de C# - IntroduçãoDaniel Araújo
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
Cesar
CesarCesar
Cesar0cero
 
Lista de java
Lista de javaLista de java
Lista de java0cero
 
Introdução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection APIIntrodução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection APIGuilherme de Cleva Farto
 
Apostila de Introdução ao C#.net
Apostila de Introdução ao C#.netApostila de Introdução ao C#.net
Apostila de Introdução ao C#.netAndre Nascimento
 
Template method pattern
Template method patternTemplate method pattern
Template method patternEriko Morais
 
Java Primeiros Passos - Cap 7
Java Primeiros Passos - Cap 7Java Primeiros Passos - Cap 7
Java Primeiros Passos - Cap 7David Willian
 

Mais procurados (20)

Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)
 
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a ObjetosBaixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
 
Java Day 2011 - Reflection: Maximizando a produtividade em Java
Java Day 2011 - Reflection: Maximizando a produtividade em JavaJava Day 2011 - Reflection: Maximizando a produtividade em Java
Java Day 2011 - Reflection: Maximizando a produtividade em Java
 
Strategy - Padrões de Projeto
Strategy - Padrões de ProjetoStrategy - Padrões de Projeto
Strategy - Padrões de Projeto
 
Curso de C# - Introdução
Curso de C# - IntroduçãoCurso de C# - Introdução
Curso de C# - Introdução
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
JAVA
JAVA JAVA
JAVA
 
Cesar
CesarCesar
Cesar
 
Lista de java
Lista de javaLista de java
Lista de java
 
Csharp
CsharpCsharp
Csharp
 
Introdução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection APIIntrodução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection API
 
Apostila de Introdução ao C#.net
Apostila de Introdução ao C#.netApostila de Introdução ao C#.net
Apostila de Introdução ao C#.net
 
Template method pattern
Template method patternTemplate method pattern
Template method pattern
 
Refatoração
RefatoraçãoRefatoração
Refatoração
 
Padrões-07 - Padrões Criacionais
Padrões-07 - Padrões CriacionaisPadrões-07 - Padrões Criacionais
Padrões-07 - Padrões Criacionais
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
Java Primeiros Passos - Cap 7
Java Primeiros Passos - Cap 7Java Primeiros Passos - Cap 7
Java Primeiros Passos - Cap 7
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 

Destaque

Професионалното предизвикателство, пред което се изправят библиотекарите при ...
Професионалното предизвикателство, пред което се изправят библиотекарите при ...Професионалното предизвикателство, пред което се изправят библиотекарите при ...
Професионалното предизвикателство, пред което се изправят библиотекарите при ...Glob@l Libraries - Bulgaria Program
 
SEFEn naistenpäivä Leena Linnainmaa
SEFEn naistenpäivä Leena LinnainmaaSEFEn naistenpäivä Leena Linnainmaa
SEFEn naistenpäivä Leena LinnainmaaSuomen Ekonomit
 
Clipping Viste la Calle 18/11/11 @ IED Barcelona
Clipping Viste la Calle 18/11/11 @ IED BarcelonaClipping Viste la Calle 18/11/11 @ IED Barcelona
Clipping Viste la Calle 18/11/11 @ IED BarcelonaIED Barcelona
 
Venezia patto dei sindaci
Venezia   patto dei sindaciVenezia   patto dei sindaci
Venezia patto dei sindacieAmbiente
 
อุปกรณ์เชื่อมต่อคอมพิวเตอร์
อุปกรณ์เชื่อมต่อคอมพิวเตอร์อุปกรณ์เชื่อมต่อคอมพิวเตอร์
อุปกรณ์เชื่อมต่อคอมพิวเตอร์Tapanarak Fluke
 
Monikanavaisuus ja mobiilimaksaminen - saumaton ostokokemus - Paytrail akatem...
Monikanavaisuus ja mobiilimaksaminen - saumaton ostokokemus - Paytrail akatem...Monikanavaisuus ja mobiilimaksaminen - saumaton ostokokemus - Paytrail akatem...
Monikanavaisuus ja mobiilimaksaminen - saumaton ostokokemus - Paytrail akatem...Paytrail
 
Describing people personality and appearance up
Describing people personality and appearance upDescribing people personality and appearance up
Describing people personality and appearance upjolehidy6
 
Talouden tunnusluvut tutuiksi, Rovaniemen tilaisuus 25.4
Talouden tunnusluvut tutuiksi, Rovaniemen tilaisuus 25.4Talouden tunnusluvut tutuiksi, Rovaniemen tilaisuus 25.4
Talouden tunnusluvut tutuiksi, Rovaniemen tilaisuus 25.4Suomen Ekonomit
 
La raccolta dei dati e la redazione dei PAES: operatività nel Patto dei Sindaci
La raccolta dei dati e la redazione dei PAES: operatività nel Patto dei SindaciLa raccolta dei dati e la redazione dei PAES: operatività nel Patto dei Sindaci
La raccolta dei dati e la redazione dei PAES: operatività nel Patto dei SindacieAmbiente
 
อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์Tapanarak Fluke
 
Доброволчеството в библиотеката - генератор за създаване на партньорства
Доброволчеството в библиотеката - генератор за създаване на партньорстваДоброволчеството в библиотеката - генератор за създаване на партньорства
Доброволчеството в библиотеката - генератор за създаване на партньорстваGlob@l Libraries - Bulgaria Program
 

Destaque (20)

chapel
chapelchapel
chapel
 
Slideshare
SlideshareSlideshare
Slideshare
 
Професионалното предизвикателство, пред което се изправят библиотекарите при ...
Професионалното предизвикателство, пред което се изправят библиотекарите при ...Професионалното предизвикателство, пред което се изправят библиотекарите при ...
Професионалното предизвикателство, пред което се изправят библиотекарите при ...
 
Fem år i arbetslivet
Fem år i arbetslivetFem år i arbetslivet
Fem år i arbetslivet
 
SEFEn naistenpäivä Leena Linnainmaa
SEFEn naistenpäivä Leena LinnainmaaSEFEn naistenpäivä Leena Linnainmaa
SEFEn naistenpäivä Leena Linnainmaa
 
Canada
CanadaCanada
Canada
 
Clipping Viste la Calle 18/11/11 @ IED Barcelona
Clipping Viste la Calle 18/11/11 @ IED BarcelonaClipping Viste la Calle 18/11/11 @ IED Barcelona
Clipping Viste la Calle 18/11/11 @ IED Barcelona
 
Grutas
GrutasGrutas
Grutas
 
Venezia patto dei sindaci
Venezia   patto dei sindaciVenezia   patto dei sindaci
Venezia patto dei sindaci
 
Grupo alcool
Grupo alcoolGrupo alcool
Grupo alcool
 
อุปกรณ์เชื่อมต่อคอมพิวเตอร์
อุปกรณ์เชื่อมต่อคอมพิวเตอร์อุปกรณ์เชื่อมต่อคอมพิวเตอร์
อุปกรณ์เชื่อมต่อคอมพิวเตอร์
 
Monikanavaisuus ja mobiilimaksaminen - saumaton ostokokemus - Paytrail akatem...
Monikanavaisuus ja mobiilimaksaminen - saumaton ostokokemus - Paytrail akatem...Monikanavaisuus ja mobiilimaksaminen - saumaton ostokokemus - Paytrail akatem...
Monikanavaisuus ja mobiilimaksaminen - saumaton ostokokemus - Paytrail akatem...
 
Describing people personality and appearance up
Describing people personality and appearance upDescribing people personality and appearance up
Describing people personality and appearance up
 
Talouden tunnusluvut tutuiksi, Rovaniemen tilaisuus 25.4
Talouden tunnusluvut tutuiksi, Rovaniemen tilaisuus 25.4Talouden tunnusluvut tutuiksi, Rovaniemen tilaisuus 25.4
Talouden tunnusluvut tutuiksi, Rovaniemen tilaisuus 25.4
 
Вашата библиотека Web 2.0
Вашата библиотека Web 2.0Вашата библиотека Web 2.0
Вашата библиотека Web 2.0
 
Eb 1 lamp - 720404 - kab toli toli 4
Eb 1 lamp - 720404 - kab toli toli 4Eb 1 lamp - 720404 - kab toli toli 4
Eb 1 lamp - 720404 - kab toli toli 4
 
La raccolta dei dati e la redazione dei PAES: operatività nel Patto dei Sindaci
La raccolta dei dati e la redazione dei PAES: operatività nel Patto dei SindaciLa raccolta dei dati e la redazione dei PAES: operatività nel Patto dei Sindaci
La raccolta dei dati e la redazione dei PAES: operatività nel Patto dei Sindaci
 
Medio ambiente
Medio ambienteMedio ambiente
Medio ambiente
 
อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์
 
Доброволчеството в библиотеката - генератор за създаване на партньорства
Доброволчеството в библиотеката - генератор за създаване на партньорстваДоброволчеството в библиотеката - генератор за създаване на партньорства
Доброволчеството в библиотеката - генератор за създаване на партньорства
 

Semelhante a Refatorações (20)

Code Smells
Code SmellsCode Smells
Code Smells
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto Adapter
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
HERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAHERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVA
 
Script c
Script cScript c
Script c
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Herança
HerançaHerança
Herança
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Padroes de Projeto
Padroes de ProjetoPadroes de Projeto
Padroes de Projeto
 
Pacotes
PacotesPacotes
Pacotes
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Java & orientação a objetos
Java & orientação a objetosJava & orientação a objetos
Java & orientação a objetos
 
JAVA - Pacotes
JAVA - PacotesJAVA - Pacotes
JAVA - Pacotes
 
03 fundamentos java
03 fundamentos java03 fundamentos java
03 fundamentos java
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
7 interfaces
7 interfaces7 interfaces
7 interfaces
 

Refatorações

  • 2. Extract Interface • Diversos clientes usam o mesmo subconjunto da interface de uma classe ou duas classes tem parte de suas interfaces em comum.  Extraia o subconjunto para uma interface. • Motivação: ▫ Somente parte da interface de uma classe faz sentido para um grupo de clientes ▫ Uma classe tem de trabalhar com qualquer classe que trate um grupo de requisições ▫ Interfaces são uma boa solução quando uma classe tem papéis distintos em diferentes situações.
  • 3.
  • 4.
  • 5. Inline Method • A implementação de um método é tão clara quanto o nome do método. Substitua a chamada ao método pela sua implementação. • Motivação: ▫ Bom para eliminar indireção desnecessária. Se você tem um grupo de métodos mal organizados, aplique Inline Method em todos eles seguido de uns bons Extract Methods.
  • 6. int bandeiradaDoTaxi (int hora) { return (depoisDas22Horas (hora)) ? 2 : 1); } int depoisDas22Horas (int hora) { return hora > 22; } //REFATORADO int bandeiradaDoTaxi (int hora) { return (hora > 22) ? 2 : 1); }
  • 7. Extract Superclass • Duas classes apresentam características semelhantes. • Motivação: ▫ Código duplicado é um dos principais Bad Smells em sistemas. Se você código duplicado em vários lugares, então, quando chega a hora de mudar, você tem mais coisas para mudar do que você deveria. ▫ Uma forma de código duplicado é ter duas classes que fazem coisas semelhantes, da mesma forma, ou coisas semelhantes de diferentes maneiras. Objetos fornecem um mecanismo embutido para simplificar esta situação com a herança. ▫ No entanto, muitas vezes você não notara as semelhanças até ter criado algumas classes, em que você precisa criar a estrutura de herança mais tarde.
  • 8.
  • 9.
  • 10. Extract Subclass • O principal motivo para o uso é a constatação de que a classe tem um tipo comportamento para algumas instâncias da classe e não para outros. Às vezes, isso é sinalizado por um tipo de código, em que você pode usar Replace Type Code with Subclasses ou Replace Type Code with State/Strategy.
  • 11.
  • 12.
  • 13. Pull UP Field • A superclasse e a subclasse têm os mesmos atributos (field). Mova os atributos repetidos para a superclasse. • Motivação: ▫ Subclasses desenvolvidas independentemente umas das outras, ou após refatoração, podem ter características (features) duplicadas. Atributos podem ser duplicados. Estes não necessariamente têm o mesmo nome em todas as subclasses. A forma de eterminar se tal acontece é verificar como os atributos são usados por outros métodos. Se eles são usados da mesma forma, pode-se generalizá-los.