Você está na página 1de 3

Acrescentar parmetro Problema: Esta refatorao muito simples, basta alterar um mtodo, e adicionar um parmetro.

. Observao: No interessante ter listas grandes de parmetros. Soluo: Declare um novo mtodo com o parmetro adicionado, altere todas as referncias do antigo mtodo para o novo mtodo, logo, faa testes, se der tudo certo, faa a remoo do mtodo antigo. Separar consulta de modificador Problema: Tem-se um mtodo que retorna um valor, mas tambm modifica o estado de um objeto. Soluo: Criam-se dois mtodos, um para a consulta e outro para a modificao. Dividir varivel temporria Problema: Neste caso, tem-se uma varivel temporria recebendo atribuies mais de uma vez para representar dados distintos. Observao: Tal varivel no pode ser de loop. Soluo: Criar uma varivel temporria para cada atribuio de diferentes dados. Auto-Encapsular Campo Problema: Quando um mtodo que acessa um campo interno de sua respectiva classe, sendo assim o aclopamento fica inadequado. Soluo: Substituir os acessos diretos por chamadas a mtodos de acesso. Substituir varivel temporria por consulta Problema: Usa-se uma varivel temporria para armazenar o resultado de uma expresso. Soluo: Fazer a substituio da varivel temporria pelo prprio mtodo que foi usado para atribuir-lhe o valor. Substituir varivel esttica por parmetro Problema: Utilizar um mtodo que depende de uma varivel esttica e que geralmente utilizada em outras partes do cdigo. Observao: Utilizar variveis estticas pode causar confuso, pois sempre espera que o campo ter um valor, mas logo, em um outro momento do cdigo, essa varivel tem seu valor alterado, o que pode comprometer o resultado obtido pelos mtodos. Soluo: Neste caso, adiciona-se um parmetro ao mtodo no lugar da utilizao da varivel esttica. Decompor condicional Problema: Quando tem uma estrutura condicional complicada, do tipo, (if - else if - ... - else). Soluo: Neste caso essencial extrair mtodos das condies. Consolidar expresso condicional Problema: Neste caso, tem-se seqncia de testes condicionais e que resultam em valores idnticos. Soluo: Devem-se combinar tais seqncias de testes em nicas expresses condicionais, na medida do possvel extrarem para mtodos. Consolidar fragmentos condicionais duplicados Problema: Tm-se fragmentos de cdigo que aparecem em vrias partes de expresses condicionais. Observao: Pode ser considerado mal uso de codificao. Soluo: Mover tal codificao para fora da expresso.

Introduzir varivel explicativa Problema: Quanto na codificao existe expresses lgicas complicadas. Observao: M preocupao por organizao do cdigo em parte dos programadores. Soluo: Para resolver este caso, interessante separar partes de expresso do cdigo em variveis temporrias a qual o nome indique o propsito da expresso. Reduzir escopo de varivel Problema: Quando uma varivel declarada alm da parte do cdigo onde necessria. Soluo: Logo, colocar a varivel na parte do cdigo onde apenas ela utilizada. Remover atribuies a parmetros Problema: Quando o cdigo faz atribuies diretamente a parmetros de um mtodo. Soluo: Fazer a utilizao de variveis temporrias, logo, passar o parmetro para uma dessas variveis. Remover flag de controle Problema: Neste caso, quanto se tem variveis que servem como flag de controle para uma sria de expresses booleanas. Observao: flags de controle tornam o cdigo complexo, escondendo o real propsito das condies. Soluo: neste caso, interessante utilizar artifcios como, break, continue e return. Substituir atribuio por inicializao Problema: Quando tem um cdigo que primeiro declara uma varivel e s depois lhe atribui algum valor. Soluo: Neste caso, basta fazer a inicializao direta na varivel. Substituir Condio Aninhada por Clusulas-Guarda Problema: Observasse uma srie de condies aninhadas entre blocos de cdigo de outras condies, o que representa certa confuso ao interpretar tais condies no cdigo fonte. Soluo: Procurar de alguma forma simplificar o cdigo e montar apenas um bloco de condies. Remover Intermedirio Problema: Encapsular objetos delegados pode custar caro, logo, toda vez que o cliente quiser usar um recurso do objeto delegado, necessrio acrescentar ao objeto servidor um mtodo de delegao simples. Soluo: Cada mtodo delegado que o cliente usa deve ser removido, logo, fazer a substituio da chamada diretamente para o objeto delegado. Por fim, testar cada mtodo. Remover Mtodo de Gravao Problema: Geralmente, programadores usam mtodos de gravao at mesmo em constructor. Existe argumentao favorvel a tal processo baseado em consistncia. Porm este caso no justifica a confuso que o mtodo de gravao pode gerar. Soluo: Avaliar caso o mtodo de gravao usado somente no constructor ou em outro mtodo chamado pelo constructor. Alterar o constructor para acessar diretamente variveis. Logo, remover o mtodo de gravao e transform-lo em campo final. Renomear mtodo Problema: Nomenclatura inadequada que geralmente no indica a realidade do mtodo.

Soluo: Ao identificar um mtodo com nomenclatura inadequada. Criar um novo mtodo com nome especifico a realidade do mtodo, copiar o contedo do mtodo antigo para o novo. Encontrar e alterar todas as referncias ao mtodo antigo para o novo. Logo, testar, e por fim, remover o mtodo antigo.

Você também pode gostar