Refatoração

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

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

Postado em

imagesUm dos conceitos mais importantes da OOP é o encapsulamento. Quanto mais encapsulado for, mas flexível e fácil será a manutenção. Segue as estratégias de refatorações para esse contexto:

Auto-Encapsular Campo: use quando encontrar uma classe que acesse um atributo diretamente dentro da própria classe, mas que está se tornando um acoplamento inadequado. Crie os get e set e use como forma de acesso para o atributo.

Substituir Atributo por Objeto: use quando encontrar uma classe que possua um dado que precisa de comportamento ou dados adicionais. Transforme o dado em um objeto.

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

“Falando novamente ao povo, Jesus disse: “Eu sou a luz do mundo. Quem me segue, nunca andará em trevas, mas terá a luz da vida”.” João 8:12