Você está na página 1de 5

Tcnicas de Refatorao com Delphi

Imagem retirada de: http://www.desenvolvimentoagil.com.br/xp/praticas/refatoracao

Ol
Uma das tcnicas que quando utilizadas fazem muita diferena na vida de um projeto a Refatorao.

O que refatorar?
Refatorar alterar a estrutura do cdigo sem alterar o seu comportamento.
Um dos grandes nomes da tcnica de refactoring refatorao Martin Fowler. Seu livro mais importante sobre refatorao
Refactoring: Improving the Design of Existing Code (ISBN 0-201-48567-2), onde so explicados os conceitos, motivaes e uma srie de
refatoraes descritas passo a passo.
Neste voc ver um pouco sobre algumas tcnicas que podem ser utilizadas para ter bons resultados com a refatorao de cdigo.

Porque refatorar?
Porque um cdigo bem refatorado mais fcil de receber mudanas do que um complexo.
A refatorao melhora o design do cdigo no projeto, torna o cdigo muito mais fcil de entender, ajuda na descoberta de bugs e
consequentemente torna o desenvolvimento mais rpido.
Muitos programadores e at equipes inteiras alegam vrios motivos como falta de tempo por exemplo, para no refatorar o cdigo, onde
acabam adotando frases como: Compilou no mexe para no estragar.
Mas isso se deve ao fato de ainda no terem praticado e desfrutado dos benefcios que so alcanados com a refatorao.

Quando Refatorar?
Sempre que o desenvolvimento estiver com excesso de tempo buscando informaes no cdigo fonte, deixando de escrever as regras e se
preocupando em entender como as atuais foram criadas, sinal que est na hora de refatorar.
Um dos sintomas mais comuns que indicam que est na hora de refatorar so excessos de comentrios.
Existem comentrios de vrios tipos, sendo os mais comuns utilizados como:
Comentrios de mtodos e parmetros
Este tipo de comentrio um dos principais causadores de dificuldades na manuteno do cdigo. Observe o cdigo abaixo:

Observe agora como seria este mesmo cdigo sem comentrios:

Note que quando um mtodo e seus parmetros so escritos usando nomes claros, os comentrios se tornam dispensveis.
Comentrios Instrutivos ou de Regras de Negcio Especficas
Existem instrues que devem ser adicionadas para que o desenvolvedor atual, saiba quais os procedimentos para execuo e/ou buscar
detalhes sobre as regras a serem reproduzidas.
Por exemplo, veja cdigo abaixo:

Fica claro que o mtodo no ter condies de navegao pelas implementaes internas do componente utilizado, sendo assim, cabe uma
instruo para que o desenvolvedor saiba imediatamente onde recorrer.
Comentrios neste sentido tambm so necessrios para alguns detalhes de regras de negcio que complementem a escrita do mtodo, isto ,
quando no for suficiente apenas nomeando o mtodo e seus parmetros.
Comentrios de Atribuio de Valores ou Execuo de Eventos de Objetos
Estes so os que mais deve-se tomar muito cuidado. Se partirmos do princpio que quem est lendo o cdigo um programador, ento no
faz sentido ter comentrios como no exemplo abaixo:

Olhando para este cdigo, voc deve concordar que estes comentrios no so escritos para programadores certo?

Como Refatorar?
O ideal alm de refatorar, utilizar ferramentas de testes para garantir que todo cdigo refatorado continue funcionando corretamente. Mas
neste texto apenas continuarei falando sobre refatorao, em breve irei publicar contedos demonstrando a utilizao de ferramentas e
tcnicas de testes de software com Delphi.
Primeiramente devemos identificar qual o tipo de refatorao necessria, sempre visando a melhoria do cdigo, em busca de clareza,
velocidade de desenvolvimento e at aprendizado.
Alm de reviso de comentrios como visto acima, algumas recomendaes para comear refatorar so:
Cdigos duplicados

Se for um trecho de cdigo, utiliza-se extrao deste cdigo para um mtodo, j se for um mtodo em vrias classes, pode ser criado uma
classe base para que todas tenham o mesmo comportamento.
Mtodos Longos

Geralmente cdigos muito extensos contm muitas variveis e vrios objetivos, para estes casos, o ideal manter o mnimo de variveis,
substituindo para classes por exemplo, identificar objetivos do mtodo, quando este tiver mais que um objetivo, ento procure extrair cada
objetivo para um mtodo especfico, um exemplo de fazer isto , separar mtodos de tratamento de dados, validao e gravao.
Classes Grandes

No caso de classes com muitos atributos e mtodos, o ideal identificar e criar outras classes e/ou subclasses, quando isto no possvel e
forem muitas classes, um bom caminho dividir em unidades, criando assim a possibilidade de analise futura individual.
Este s o comeo, existem muitas outras tcnicas a serem exploradas para melhorar o cdigo e manter a segurana e qualidade do projeto.

Para auxiliar a refatorao, no Delphi a partir da verso XE8 onde se tornou definitivo a integrao com a ferramenta Castalia existem muitos
recursos no menu Refactoring, abaixo a lista dos tipos de refatorao:
Rename Variable
Altera o nome de uma varivel e todas as referncias a essa varivel dentro de um mtodo ou em uma classe.
Rename Parameter
Altera o nome de um parmetro de um mtodo na interface e implementao, e todas as referncias para o parmetro dentro do procedimento
ou funo.
Inline Temporary Variable
Remove uma varivel local a partir do cdigo e substitui todas as referncias a essa varivel dentro do procedimento ou funo com a
expresso atribuda varivel.
Introduce Explaining Variable
Declara uma nova varivel e inicializa a uma expresso especificada.
Split Temporary Variable
Altera uma varivel que atribuda duas vezes (sem acumulao) em duas variveis distintas, cada uma com uma nica atribuio.
Remove Unused Variables
Elimina qualquer varivel no utilizada.
Eliminate with
Substitui a clusula with para as referncias adequadas.
Rename Method
Renomeia um mtodo e todas as suas referncias.
Extract Method
Extrai um fragmento de cdigo em um novo mtodo com o seu prprio nome, substituindo o fragmento original com uma chamada para o
novo mtodo
Add Parameter
Adiciona um novo parmetro para um procedimento ou funo, sincronizando ambas as declaraes de interface e implementao do
mtodo.
Rename Class
Altera o nome de uma classe e todos os usos do nome da mesma classe.
Move Class
Move uma classe (e todos os seus mtodos) de uma unidade para outra.
Rename Field
Altera o nome de um campo e todas as referncias a esse campo dentro da classe.
Rename Property
Altera o nome de uma propriedade e todas as referncias a essa propriedade dentro da classe.
Se quiser saber mais sobre como utilizar estes refactorings, consulte o manual completo em: How to Use Castalia Refactoring Tool
Acesse os canais Delphi Clean Code no Youtube, Facebook e Twitter curta, compartilhe e comente para que possamos prosseguir e melhorar
nosso contedo.
Obrigado,

Carlos Eduardo

Compartilhe isso:
Clique para compartilhar no Twitter(abre em nova janela)
Compartilhar no Facebook(abre em nova janela)
Compartilhe no Google+(abre em nova janela)

Publicado em 20 de abril de 2016 por Delphi Clean CodePublicado em Artigos

Navegao de Posts
Anterior Post anterior: Qual seu controle de verso?

2 comentrios em Tcnicas de Refatorao com Delphi


1.

Fbio Uberti
21 de abril de 2016 s 00:12

Muito interessante seu artigo, nos ajuda a pensar diferente e mostra tambm ferramentas que o Delphi possui e no so muito
conhecidas..
Curtida
Responder

1.

Delphi Clean Code


21 de abril de 2016 s 01:00

Legal Fbio o objetivo deste canal justamente levar ao conhecimento assuntos que nos faam pensar diferente, obrigado pelo
comentrio e bons estudos
Curtida
Responder

Você também pode gostar