Refatoração para Padrões – Parte 1
Refatoração para Padrões – Parte 2
Refatoração para Padrões – Parte 3
Refatoração para Padrões – Parte 4
Refatoração para Padrões – Parte 5
Refatoração para Padrões – Parte 6
Refatoração para Padrões – Parte 7
Refatoração para Padrões – Parte 9
Refatoração para Padrões – Parte 10
Refatoração para Padrões – Parte 11
Refatoração para Padrões – Parte 12
Refatoração para Padrões – Parte 13
Aborda o tema refatoração para padrões com o objetivo de mostrar como o desenvolvedor pode usá-lo para melhorar o código-fonte de suas aplicações.
Para que serve:
Para prover conhecimento ao desenvolvedor sobre refatoração para padrões e demonstrar através de exemplos práticos a aplicação das técnicas de refatoração para padrões Substituir Envio condicional por Command e Extrair Composite.
Em que situação o tema é útil:
O tema se torna fundamental para desenvolvedores que já estão familiarizados com padrões de projeto e já os implementam em seus softwares e que querem saber mais sobre refatoração para padrões, conhecendo os benefícios que sua utilização traz.
A criação de lógica condicional é o recurso utilizado pelos desenvolvedores para permitir que diferentes caminhos possam ser tomados durante a execução de uma aplicação. Um problema neste sentido está relacionado ao tamanho do código que contém a lógica condicional. Caso ele seja extenso demais, pode vir a se tornar complicado de entender e manter. Lógica condicional criada para executar diversos tipos de ações pode centralizar muito código em uma única classe do sistema.
A definição de uma técnica de refatoração para padrões que permita simplificar essa lógica condicional ao implementar o padrão de projeto Command, permite que o código responsável por executar as diversas ações seja dividido por diversas classes command. A refatoração para padrões Substituir Envio condicional por Command auxilia neste processo.
As 27 técnicas de refatoração para padrões existentes implementam diversos padrões de projeto baseando-se no contexto de um problema encontrado no código de algumas aplicações. Com isso, elas apresentam padrões de projeto que podem ser implementados com base em diferentes problemas, como é o caso do padrão Composite. Neste artigo sua implementação se dá com base em um problema: código duplicado responsável pela manipulação de composites. Nesse contexto, surge a necessidade de remover código duplicado que pode estar em diferentes subclasses de uma hierarquia. Para tal tarefa, o código é movido para a superclasse e a duplicação é eliminada. Essa modificação será possível com a aplicação da refatoração para padrões Extrair Composite (ver Nota 1).
Para um melhor entendimento das refatorações para padrões abordadas neste artigo é necessário que o desenvolvedor conheça previamente as técnicas de refatoração Extrair Método, Extrair Classe, Extrair SuperClasse e Extrair Interface, por serem parte fundamental no processo de aplicação da refatoração para padrões Substituir envio condicional por Command, e ainda conhecer as técnicas de refatoração Renomear Método, Subir Método na Hierarquia e Substituir Algoritmo, que, juntamente com a refatoração Extrair Método, constituem os pré-requisitos necessários para a aplicação da técnica de refatoração para padrões Extrair Composite (ver Nota 2).
A sequência apresentada pelo autor das refatorações para padrões (KERIEVSKY, 2008) traz a técnica Formar Template Method após a técnica Substituir envio condicional por Command, contudo, é destacado que a técnica em questão é idêntica à técnica de refatoração Criar um Método Padrão (FOWLER, 2004) (edição de número 30 da revista Engenharia de Software Magazine). Portanto, neste artigo será apresentada apenas uma visão geral sobre Formar Template Method, permitindo que os conceitos já vistos na apresentação da técnica de refatoração Criar um Método Padrão sejam relembrados.
Uma
breve descrição do padrão de projeto
Composite foi apresentada no artigo da edição de número 30 da Engenharia de
Software Magazine e relembrada na edição de número 34.
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com
vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa
bagagem consegui um estágio logo no início do meu primeiro
período na faculdade. Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo. Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a
pena, pois a plataforma é bem intuitiva e muuuuito
didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito
obrigado! Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento
front-end, tinha coisas que eu ainda não tinha visto. A
didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado,
adorando demais. Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É
um passo a passo incrível. Só não aprende quem não quer.
Foi o melhor investimento da minha vida! Foi um dos melhores investimentos que já fiz na vida e tenho aprendido
bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da
programação, irei assinar meu contrato como programador
graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana,
aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem
como não aprender, estão de parabéns! Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de
seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com
React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo
muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na
área.Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!