Recursos especiais neste artigo:
Conteúdo sobre boas práticas,Artigo no estilo Mentoring
Aprimorar o código fonte existente pode proporcionar um sistema melhor organizado e legível, contribuindo para o uso eficiente dos recursos envolvidos.
Este artigo apresenta exemplos e cenários comuns no uso de refatoração, servindo como um 'guia prático' para a aplicação desta técnica no dia a dia da equipe de desenvolvimento.
Em que situação o tema
útil
Aprimorar o código fonte
existente pode proporcionar um sistema melhor organizado e legível, resultando
no melhor entendimento de código fonte pelas equipes de desenvolvimento e
manutenção como também contribui para o uso eficiente dos recursos envolvidos.
Hoje em dia, as aplicações são frequentemente alvo de diversas mudanças, aprimoramentos e até mesmo eventuais correções. Isso é motivado, principalmente, pela alteração das regras de negócio ao longo do tempo e também por eventuais atualizações tecnológicas.
O código fonte implementado em qualquer aplicação deve ter um nível de organização apropriado associado com a utilização adequada da tecnologia em que é desenvolvido. Por exemplo, na linguagem Java, deve ser difundido no código todos os conceitos da programação orientada a objetos. A organização no desenvolvimento do sistema, bem como o uso adequado de suas características, possibilita que outras equipes de trabalho, diferentes daquelas que inicialmente construíram a aplicação, sejam capazes de entender e realizar as alterações sem comprometer outras funcionalidades. Para isso, é necessário que detenham conhecimento dos conceitos e técnicas do paradigma de programação utilizado. Em resumo, quanto mais padronizado, organizado e focado na tecnologia empregada, mais independente a aplicação se torna da equipe que originalmente o criou.
Apesar de um sistema ser bem desenvolvido com uma boa organização e planejamento, nunca estará imune ao processo de refatoração. A essência da refatoração está na melhoria contínua do código atrelada à evolução da tecnologia empregada e modelo implementado. Desta forma, mesmo que sejam utilizados Padrões de Projeto (Design Patterns), sobretudo em projetos de grande porte, a necessidade de refatoração não é eliminada, apesar de sua contribuição significativa no processo de desenvolvimento e construção de um bom código. Devido a isso, independente do padrão utilizado ou mesmo em sua ausência, há uma série de características que devem ser verificadas a fim de tornar as estruturas no código legíveis e bem construídas. Tal organização tornará as rotinas de manutenção e desenvolvimento menos complexas, resultando em um melhor entendimento das equipes de desenvolvimento e, como consequência, reduzindo o tempo de análise e manutenção.
Podemos dizer que a refatoração de um código fonte é o mesmo que aprimorá-lo ou melhorá-lo constantemente sem alterar seu comportamento ou resultado final. O jargão “Em time que está ganhando não se mexe” não pode ser empregado no desenvolvimento de sistemas. Na verdade, quanto mais aprimoramentos e alterações forem realizados, visando melhorar desempenho, simplicidade e legibilidade, melhor será para a manutenção e crescimento do sistema. Isso implica também que à medida que o JDK (Java Development Kit) e o JRE (Java Runtime Environment) evoluem, pode ser interessante incorporar seus respectivos avanços e manter a aplicação sempre atualizada. Da mesma forma, é recomendável verificar se as APIs (Application Programming Interface) utilizadas possuem versões mais modernas a serem empregadas.
Apesar das modificações nos sistemas para incorporarem recursos mais atuais serem uma das formas de refatorá-lo (entenda que a refatoração não é apenas o fato de atualizar o JDK por um mais atual, mas sim incorporar e aprimorar o código existente com novas estruturas), o processo de refatoração é muito mais abrangente. Ele também envolve entender o código fonte e buscar o uso de estruturas mais simples, melhor identificadas e que consumam menos recursos, caso seja possível. Portanto, é preciso analisar o código e buscar por aperfeiçoamentos que visem torná-lo mais simples e claro.
Existem diversos indícios para promover a refatoração de um código. Dentre os principais, podemos citar a remoção de algoritmos duplicados, a divisão de métodos extensos e complexos em outros menores, facilitando a reutilização, o uso adequado dos tipos e classes, visando menor consumo de memória, entre outros.
Com base nisso, este artigo tem a finalidade de apresentar as principais características que podem indicar possíveis trechos de código candidatos a refatoração, bem como sugestões de técnicas a serem empregadas neste processo de aperfeiçoamento. Tais características foram indicadas por especialistas renomados na área, Kent Beck e Martin Fowler, no livro “Refatoração: Melhorando a Qualidade do Código Pré-Existente” (“Refactoring: Improving the Design of Existing Code”). Na seção Links há informações a respeito de ambos os autores e também do livro. Ademais, também serão analisadas algumas técnicas de refatoração baseadas nas novas funcionalidades do Java 7.
Os principais sinais para refatorar seu código fonte
O conceito de refatoração introduzido pelos especialistas, Martin Fowler e Kent Beck, é: “Uma alteração feita na estrutura interna do software para torná-lo mais fácil de entender e mais barato para modificar sem alterar seu comportamento observável. É uma forma disciplinada de limpar código que minimiza as chances de introduzir bugs.”.
A definição de refatoração dada pelos especialistas indica que a refatoração é um conjunto de modificações e aprimoramentos no código, com o objetivo de torná-lo mais simples, organizado e legível, mantendo sempre o mesmo resultado ou finalidade original. Em outras palavras, é fazer a mesma coisa (no sentido de entregar um mesmo resultado) de uma maneira diferente e simplificada.
Neste contexto também é possível contar com a avaliação do código pela própria equipe de desenvolvimento, no que podemos chamar de auto avaliação ou revisão um pouco mais aprofundada. Durante a revisão, quando for identificado qualquer sinal de desconfiança nas estruturas utilizadas no código, é preciso revê-lo e analisá-lo cuidadosamente. Neste sentido, Kent Beck ressalta que a refatoração deve ser aplicada sempre que o “código cheirar mal” (bad smell in code), ou seja, quando o código indicar algum problema, não necessariamente relativo a um bug, mas que pode representar um obstáculo para atividades de manutenção e evolução do software, como um código mal indentado, de difícil compreensão.
A seguir é apresentada a lista dos principais indícios que sinalizam a necessidade da refatoração de código, baseada nos pilares da organização, legibilidade, simplicidade e desempenho:
· Código duplicado;
· Métodos e classes extensas;
· Lista de parâmetros longa;
· Má indentação;
· Uso adequado de Strings;
· Obsessão por tipos primitivos (Primitive Obsession);
· Substituição de constantes por Enums;
· Utilização de literais em tipos numéricos.
Nos próximos tópicos serão explicadas e detalhadas as principais técnicas de refatoração para os principais indícios apresentados. Desta forma, será exibido um código com a necessidade clara de refatoração, de acordo com a característica apontada e, em seguida, será mostrado o mesmo código fonte devidamente refatorado com a explicação da técnica utilizada.
...Confira outros conteúdos:
Programação x Concurso Público
Osvaldo aprendeu programação
DevMedia x Netflix: Onde investir meu...
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
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.
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!
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.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.