Catálogo de Refatoração: Lidando com Generalização #2

Subir o Corpo do Construtor na Hierarquia – use quando encontrar construtores nas subclasses que tem o mesmo formato e ou funcionalidade declarado de forma duplicada. Crie um construtor para a superclasse que centralize o comportamento duplicado e chame-o a partir dos construtores das subclasses.

Descer Campo na Hierarquia – use quando encontrar algum comportamento na superclasse que é relevante apenas para algumas de suas subclasses. Mova-o para essas subclasses.

Descer Método na Hierarquia – use quando encontrar algum campo na superclasse que é utilizado apenas para algumas de suas subclasses. Mova-o para essas subclasses.

Para todas as informações, veja o post inicial.

“Então todos os que pedirem a ajuda do Senhor serão salvos.” Atos 2:21

Anúncios

Catálogo de Refatoração: Lidando com Generalização #3

Extrair subclasse – use quando encontrar uma classe que tem características que são utilizadas apenas em algumas instâncias executadas na solução. Crie uma subclasse para esse subconjunto de características, separando as classes e as instancias polimorficamente da superclasse original.

Extrair superclasse – use quando encontrar diversas classes clientes que usam o mesmo subconjunto da interface de uma classe ou em casos de existirem duas classes diferentes que tem parte de suas interfaces em comum. Extraia o subconjunto para uma interface e use instâncias polimórficas na solução.

Condensar Hierarquia – use quando encontrar uma superclasse e uma subclasse que não são muitos diferentes, no qual a subclasse não está acrescentando em nada. Junte-as na mesma superclasse e apague a subclasse.

Para todas as informações, veja o post inicial.

“Ele foi rejeitado e desprezado por todos; ele suportou dores e sofrimentos sem fim. Era como alguém que não queremos ver; nós nem mesmo olhávamos para ele e o desprezávamos.” Isaías 53:3

Catálogo de Refatoração: Lidando com Generalização #1

Generalizações produzem seu próprio lote de refatorações, a maior parte lidando com a movimentação de métodos por uma hierarquia de herança. Segue as estratégias de refatorações para esse contexto:

Subir Campo na Hierarquia – use quando encontrar duas subclasses que tem o mesmo campo declarado de forma duplicada. Mova o campo para uma superclasse. Tais campos às vezes têm nomes similares, mas nem sempre dependendo do contexto.

Subir Método na Hierarquia – use quando encontrar métodos nas subclasses que tem o mesmo formato e ou funcionalidade declarado de forma duplicada. Mova o campo para uma superclasse. Muitas das vezes será necessário parametriza-lo de forma diferente do original ou até alterar um pouco do corpo para que venha funcionar de forma mais genérica para todas as subclasses.

Para todas as informações, veja o post inicial.

“A pessoa que aceita e obedece aos meus mandamentos prova que me ama.”João 14:21

Catálogo de Refatoração: Simplificando Chamadas de Métodos #4

Remover Método Set – use quando encontrar um campo que ser gravado na sua criação e nunca alterado. Remova o método set de desse campo e atribua o valor na criação.

Ocultar Método – use quando encontrar um método que não usado por nenhuma outra classe a não ser a própria classe. Torne-o privado.

Substituir Construtor por um Método Fabrica – use quando encontrar um construtor que faz mais coisas do que uma simples construção. Substitua o construtor por uma fabrica.

Para todas as informações, veja o post inicial.

“Ó Deus, examina-me e conhece o meu coração! Prova-me e conhece os meus pensamentos.” Salmos 139:23

Catálogo de Refatoração: Simplificando Chamadas de Métodos #5

Substituir Código de Erro Por Exceção – use quando encontrar um método que retorno um código especial para indicar a ocorrência de um erro. Em vez disse, gere uma exceção.

Substitua Exceção por Teste – use quando encontrar um método que esta gerando exceção em uma condição que o objeto solicitante poderia ter verificado primeiro. Altere o solicitante para fazer o teste, evitando a lançamento da exceção.

Para todas as informações, veja o post inicial.

“Eu poderia falar todas as línguas que são faladas na terra e até no céu, mas, se não tivesse amor, as minhas palavras seriam como o som de um gongo ou como o barulho de um sino.” 1 Coríntios 13:1

Catálogo de Refatoração: Simplificando Chamadas de Métodos #3

Preservar Objeto Inteiro – use quando encontrar um código que leia diversos valores de um objeto e passe estes como parâmetros em uma chamada de método. Em vez disso, passe o objeto inteiro.

Substituir Parâmetro por Método – use quando encontrar um objeto que chama um método e depois passa o resultado como parâmetro para outro método. O destinatário também pode chamar esse método, por isso remova esse parâmetro e faça o destinatário chamar o método.

Introduzir Objeto Parâmetro – use quando encontrar um código que use grupo de parâmetros que naturalmente andam juntos. Substitua por um objeto.

Para todas as informações, veja o post inicial.

“Portanto, queridos irmãos, continuem fortes e firmes. Continuem ocupados no trabalho do Senhor, pois vocês sabem que todo o seu esforço nesse trabalho sempre traz proveito.” 1 Coríntios 15:58

Catálogo de Refatoração: Simplificando Chamadas de Métodos #2

Separar a Consulta do Modificador – use quando encontrar um método que retorna um valor mas que também altere o estado do objeto. Sinalize claramente a diferença em métodos com e sem efeitos colaterais, criando dois métodos, um para consulta e um para modificação. As coisas ficaram bem mais fáceis.

Parametrizar Método – use quando encontrar métodos diferentes que fazem coisas semelhantes, mas que variam de acordo com alguns valores. Simplifique substituindo todos os métodos por um único método que lide com as variações utilizando parâmetros.

Substituir Parâmetros por Métodos Explícitos – use quando encontrar um método que execute diferentes códigos de acordo com os valores de parâmetros enumerados. Crie um método separado para cada valor do parâmetro.

Para todas as informações, veja o post inicial.

“Quem ama é paciente e bondoso. Quem ama não é ciumento, nem orgulhoso, nem vaidoso.” 1 Coríntios 13:4