Refatoração

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

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

Postado em

advertising-by-the-numbers-its-big-business-with-big-numbers-to-matchSubstituir Enumeração por Classe – use quando encontrar uma classe que tenha uma enumeração numérica utilizada como variáveis inteiras de forma que não afete seu comportamento. Substitua o numero por uma nova classe.

Substituir Enumeração por Subclasse – 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. Substitua a enumeração por subclasses e use polimorfismo para lhe dar com o comportamento variável removendo switch ou ifs referentes a decisões comportamentais.

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

“Guardo a tua palavra no meu coração para não pecar contra ti.” Salmos 119:11

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

Postado em

checkoffcolorEncapsular Campo – use quando encontrar um atributo público. Torne-o privado e forneça métodos de acesso.

Encapsular Coleção – use quando encontrar um método que retorna uma coleção encapsulada como privada. Faça-o retornar uma visão apenas de leitura e forneça métodos de adição e remoção.

Substituir Registro por Classe de Dados – use quando encontrar um pedaço de código usando variáveis de tipo registro em um ambiente de programação não orientado a objetos. Crie um objeto de dados para agrupar essas variáveis sem comportamento (conhecido como anêmico) para representar o registro.

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

“Não façam nada por interesse pessoal ou por desejos tolos de receber elogios; mas sejam humildes e considerem os outros superiores a vocês mesmos.” Filipenses 2:3-4

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

Postado em

pastas-do-computador1Transformar Associação Unidirecional em Bidirecional – use quando encontrar duas classes que precisar usar os recursos uma da outra, mas há somente uma conexão unidirecional apenas.

Transformar Associação Bidirecional em Unidirecional – use quando encontrar duas classes com associação bidirecional, mas uma classe não precisa mais dos recursos da outra. Elimine o lado desnecessário da associação. 

Substituir Número Mágico por Constante Simbólica – use quando encontrar um número literal com um significado especial. Crie uma constante, nomeie-a de acordo com seu significado e substitua o número por ela.

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

“Louvemos ao Deus e Pai do nosso Senhor Jesus Cristo! Por causa da sua grande misericórdia, ele nos deu uma nova vida pela ressurreição de Jesus Cristo. “1 Pedro 1:3

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

Postado em Atualizado em

downloadMudar de Referência para Valor – use quando encontrar um objeto por referência que é pequeno, imutável e difícil de gerenciar. Transforme o objeto em um objeto por valor. Objetos referências são aqueles imutáveis que têm a construção controlada por fabricas e não podem ser manualmente instanciados. Objetos valor são aqueles que podem ser manualmente instanciados mesmo com duplicação com estado. Ambos são imutáveis.

Substituir Vetor por Objeto – use quando encontrar vetor sendo utilizado para armazenar elementos com significado diferentes. Substitua o vetor por um objeto que tenha um atributo para cada elemento.

Duplicar Dados Observados – use quando encontrar dados de domínios disponíveis somente em um controle de GUI e métodos de domínio precisam acessá-los. Copie os dados para um objeto de domínio e configure um Observer para sincronizar os dois fragmentos de dados.

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

“Agora já não existe nenhuma condenação para as pessoas que estão unidas com Cristo Jesus.” Romanos 8:1

Refatoração – Aperfeiçoamento e Projeto

Postado em

cover_82c22744-4cfe-4fcb-a918-535ed9d92441O que ha de errado em um código simples feito de forma rápida e imperfeita? Aparentemente nada, desde que ele funcione! Seria um julgamento meramente estético? O usuário final e o compilador não se importam se o código é ou não elegante.

Mas quando alteramos uma solução, há um humano envolvido e humanos se importam. Uma solução mal projetada é difícil de ser alterada.

Se for difícil descobrir aonde e como alterar, há uma grande chance desse humano cometer um erro e introduzir falhas, principalmente se caso o pedaço de código esteja inserido dentro de uma solução complexa.

Refatoração é o processo de alteração de uma solução de modo que o comportamento externo do código não mude, mas que sua estrutura interna seja melhorada. É uma maneira disciplinada e sistemática de aperfeiçoar o código que minimiza a chance de introdução de falhas.

Sem refatoração, o projeto termina por se deteriorar. À medida que as pessoas alteram o código, alterações para executar objetivos de curto prazo, alterações sem uma compreensão total do projeto da solução e principalmente alterações por pessoas sem experiência reais de design OO levam o projeto para o caminho da inflexibilidade e rigidez. Isso tem um efeito cumulativo. Quanto mais difícil é entender a solução a partir do código, mais difícil será de preserva-lo e rapidamente ele se desestruturará.

Já faz algum tempo que eu venho resumindo cada dica desse livro e publicando em um post separado com o objetivo de ser utilizado com material de referência e estudos. Veja nessa categoria.

“Portanto, estejam com a mente preparada, prontos para agir; estejam alertas e coloquem toda a esperança na graça que lhes será dada quando Jesus Cristo for revelado.” 1 Pedro 1:13