Code Smells & Refactoring

Como você avalia se a sua codebase possui oportunidades para refatoração?

Abaixo, listo alguns dos smells que podem ser encontrados nos nossos códigos e que são oportunidades para refatorar e deixar o código mais limpo, claro e legível.

Código morto (sem uso)

Quando?

Código que não está sendo chamado ou referenciado. Comentários que não são úteis.

O que fazer?

Deletar. “Mas e se no futuro eu precisar?” é pra isso que existe controle de versão!

Introdução de Objeto Parâmetro

Quando?

Um conjunto ou sub conjunto de parâmetros que com frequência é utilizado.

O que fazer?

Substituir por um objeto que contemple estes parâmetros.

Decomposição de Condicional

Quando?

Quando existem um encadeamento de condicionais (if’s) e diversos fluxos alternativos.

O que fazer?

Extrair métodos para as condições (if), as consequências (then) e alternativas (else) e fazendo com que o nome dos métodos representem o propósito de cada uma das diferentes partes do código.

Preservar Objeto

Quando?

Você está manipulando diversos valores/atributos de um objeto e passando esses valores por parâmetro para outro método.

O que fazer?

Passe por parâmetro o objeto inteiro.

Extrair uma nova Classe

Quando?

Quando uma classe está desempenhando uma função que deve ser desempenhada por outras duas classes.

O que fazer?

Crie uma nova classe, e mova os atributos e métodos pertinentes para a nova classe criada.

Elevar um método

Quando?

Quando subclasses diferentes possuem métodos que geram retornos idênticos.

O que fazer?

Mova esse método para a classe “pai” (superclass).

Extrair método

Quando?

Uma porção de código que poderia ser agrupada em um método com uma responsabilidade bem definida.

O que fazer?

Extraia esse código para um novo método e garanta que o nome do método explica a responsabilidade e intenção do novo método criado.

Remover método (inline method)

Quando?

O conteúdo de um método é tão claro quanto o nome do mesmo e o seu tamanho é muito pequeno (uma ou pouquíssimas linhas).

O que fazer?

Adicionar o conteúdo do método para quem chama o método e remover o mesmo.

Renomear método

Quando?

O nome do método não representa o seu comportamento ou responsabilidade.

O que fazer?

Alterar o nome do método para que seja entendível.

Mover método

Quando?

O método utiliza ou está sendo utilizado por mais funcionalidades de outra classe do que a classe em que ele foi definido.

O que fazer?

Crie um novo método com conteúdo similar ao original. Ou faça com que o método antigo delegue a responsabilidade para o novo método criado ou remova o método antigo.

Mover atributo

Quando?

Um atributo é utilizado mais por outra classe do que a classe em que ele foi originalmente definido.

O que fazer?

Criar um novo atributo semelhante na classe em que ele é mais utilizado e substituir todos os usos do atributo originalmente declarado na primeira classe.

Renomear atributo ou variável

Quando?

Quando o nome do atributo ou variável não representar a sua real intenção, quando não for claro.

O que fazer?

Alterar o nome do atributo ou variável para que seja entendível.

image1

 

Outros exemplos de smells:

  • Código que viola regras de Orientação a Objetos (caso o paradigma seja OO).
  • Código difícil de se modificar ou que o time considere “arriscado” efetuar alterações.
  • Métodos e/ou Classes que sejam muito extensas, com muita lógica ou muita responsabilidade.
  • Código com muitas dependências, pode ser um indício de alto acoplamento.

 

 

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s