Refatoração

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

Postado em Atualizado em

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

Postado em Atualizado em

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 

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

Postado em Atualizado em

Produzir interfaces que sejam fáceis de entender e usar é uma habilidade chave no desenvolvimento do bom software orientado a objetos. Segue as estratégias de refatorações para esse contexto:

Renomear Método – use quando encontrar um método que não revela seu propósito. Altere o nome do método de maneira que comunique claramente sua intenção.

Acrescentar Parâmetro – use quando encontrar um método que precise de mais informação de quem o chama. Acrescente um parâmetro para que o objeto possa passar essa informação.

Remover Parâmetro – use quando encontrar um parâmetro que não é mais usado pelo corpo do método. Remova-o.

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

“Confie no SENHOR. Tenha fé e coragem. Confie em Deus, o SENHOR.” Salmos 27:14

Catálogo de Refatoração: Simplificando Expressões Condicionais #23

Postado em Atualizado em

Substituir Comando Condicional por Polimorfismo – use quando encontrar um comando condicional para um método que seleciona diferentes tipos de comportamentos de acordo com o tipo de objeto. Mova cada ramificação do comando condicional para um método de sobrescrita em uma subclasse, tornando abstrato o método original.

Introduzir Objeto Nulo – use quando encontrar verificações repetidas de valores nulas. Substitua o valor por um objeto polimórfico nulo.

Introduzir Asserção – use quando encontrar uma sessão de código que faz alguma suposição sobre o estado do programa. Torne a suposição explicita com uma asserção.

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

“Irmãos, peço, pela autoridade do nosso Senhor Jesus Cristo, que vocês estejam de acordo no que dizem e que não haja divisões entre vocês. Sejam completamente unidos num só pensamento e numa só intenção.” 1 Coríntios 1:10

Catálogo de Refatoração: Simplificando Expressões Condicionais #2

Postado em Atualizado em

Consolidar Fragmentos Condicionais Duplicados – use quando encontrar um fragmento de código que é executado em todas as ramificações de uma expressão condicional if-then-else. Mova-a para fora da expressão guardas tornando a intenção do código muito mais clara.

Remover Flag de Controle – use quando encontrar uma variável que esta atuando como uma flag de controle para uma série de expressões booleanas. Substitua todas as flags de controle por break ou return guardas tornando a intenção do código muito mais clara.

Substituir Condições Aninha Por Cláusula Guarda – use quando encontrar um método tem uma lógica condicional que não deixa claro o fluxo normal da execução. Substitua estes casos por clausulas guardas tornando a intenção do código muito mais clara.

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

“A pessoa que me ama obedecerá à minha mensagem, e o meu Pai a amará. E o meu Pai e eu viremos viver com ela.” João 14:23

Catálogo de Refatoração: Simplificando Expressões Condicionais #1

Postado em

Lógica condicional pode se tornar traiçoeira, de modo que aqui estão várias refatorações que você pode usar para simplificá-la. Segue as estratégias de refatorações para esse contexto:

Decompor Condicional – use quando encontrar uma estrutura condicional complicada if-then-else. Torne sua intenção mais clara extraindo métodos das condições de avaliação e das partes do then e do else.

Consolidar Expressão Condicional – use quando encontrar uma sequência de testes condicionais agrupados por operadores lógicos OR ou AND nas quais cada um é diferente do outro, mas que a ação resultante na condição da avaliação é a mesma. Torne sua intenção mais clara extraindo método destas condições utilizando-a com uma única expressão condicional.

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

“Jesus respondeu: — Eu sou o pão da vida. Quem vem a mim nunca mais terá fome, e quem crê em mim nunca mais terá sede.” João 6:35

Catálogo de Refatoração: Organizando Dados #6

Postado em

1429038287_86543231Substituir Enumeração pelo Padrão State ou Strategy – use quando encontrar uma classe que tenha uma enumeração numérica utilizada como variáveis inteiras que tenha influência no comportamento da classe, mas que por algum motivo você não consegue substituir por subclasses. Substitua a enumeração por um objeto que represente o estado do objeto original usando State ou Strategy, escolhendo o que se ajustar melhor a situação especifica.

Substituir Subclasse por Campo – use quando encontrar subclasses que diferem somente em métodos que retornam dados constantes. Transforme os métodos em campos na superclasse e elimine as subclasses uma vez que esse tipo de situação não se justifica sua existente.

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

“Tenha cuidado com o que você pensa, pois a sua vida é dirigida pelos seus pensamentos.” Provérbios 4:23