Creators
7
min de leitura
4 de março de 2021
Este post contém tradução automática

Você sabe o que é Bad Smell ? Parte II

Thiago dos Santos Chagas
.Net Consultor
Desenvolvo e implemento vários testes para aplicação em software . Eu avalio projetos e asseguro compliance com requisitos comerciais na plataforma de API da Sensedia.
Mais sobre o autor

Voltamos com a segunda parte da semana do Bed Smell aqui do nosso blog. E se você ainda não leu a primeira parte é só clicar aqui. Hoje vamos falar da família Obfuscators.

Mas quem são os Obfuscadores?

O Obfuscators é um tipo de bad smell que encobre o comportamento ou o propósito do nosso código gerando falta de comunicação, pois ofusca o que deve ser feito e a intenção, causando confusão ao leitor. Neste artigo vamos falar dos Obfuscators Vertical Separation e os Poor Names. Mas quem são esses caras? 

Vertical Separation 

“Variáveis e funções devem ser declaradas onde forem usadas.” 

Isto pode parecer bobagem, mas ajuda muito na organização e visibilidade do código. Lembre-se que nós criamos códigos para pessoas, não para máquinas, e quanto mais legível for, mais rápido será a adaptação de outra pessoa que vai mantê-lo, ou mesmo você quando voltar ao código depois de algum tempo. 

Vamos ver um exemplo! 

Na imagem abaixo, temos uma classe chamada de VerticalSeparation. Ao analisar esta classe, vemos que contém quatro métodos declarados e uma variável. No método RodarMetodoUm, no início temos uma declaração de uma variável, meuValor, que só será usada na última chamada de método (RodarMetodoTres) . A classe nos mostra que a organização dos métodos está um pouco confusa, temos que usar o scroll para verificar os métodos contidos. Já ligamos o alerta para efetuar um refactor nessa classe.

Imagem para o correio

 Vamos ver o que podemos melhorar na classe acima?

Imagem para o correio

 

Dando uma olhada na classe após a refatoração, conseguimos perceber uma melhor organização tanto visual quanto física do seu conteúdo. Dentro do método RodarMetodoUm, deixamos separadas as chamadas da rotina compartilhada e as chamadas em cascata. 

Como usamos a variável declarada somente na chamada do método RodarMetodoTres , que é a última, fazemos a declaração dela antes da chamada do método. Isto mostra que a variável foi declarada naquele pedaço de código demonstrando a intenção de ser usada logo abaixo na próxima chamada. A declaração dos métodos implementados também seguem a ordem em que eles foram chamados no fluxo principal.

Outras dicas para resolvermos Vertical Separation

  •  Métodos privados devem ser declarados logo abaixo de onde forem usados sem necessidade de rolagem de scroll.
  •  Caso você tenha um método privado que é usado por vários outros métodos , declare após o primeiro local de uso.
  • A classe não deve ser tão longa a ponto de se ficar procurando as rotinas. Quebrar a classe em classes menores(Single Responsabilty, Interface Segregation Principle).

Poor Names

Imagem para o correio

 

Umas das coisas mais importantes em um código são os nomes sejam de métodos, classes ou variáveis. Um nome tem que ser descritivo e deve expressar exatamente o que aquilo representa na regra em que estamos trabalhando. Poor Names fogem totalmente deste padrão, ou seja são difíceis de se entender e são sem expressão.

Vamos a um exemplo.

 

Imagem para o correio

Na classe acima PoorName temos a declaração de propriedades e do método de forma totalmente errônea. Nomes sem expressão, uso de prefixos, declarações com padrões inválidos. Temos um método que pelo nome não temos a mínima ideia do ele faz. Esta classe necessita urgentemente de um refactor.


Imagem para o correio

Na classe após a refatoração, Temos as propriedades declaradas com as Convenções usadas no C# . E agora com um nome mais extenso, o método e suas declarações internas , expressam exatamente o que ele faz.

 Outras dicas para resolvermos Poor Names 

  • Verifique sempre se o nome proposto é descritivo. 
  • O nome deve ser dado de acordo com o nível de abstração. 
  • Tente seguir padrões.
  • Os nomes não devem ser ambíguos. 
  • Use nomes extensos para contextos extensos. 
  • Não utilize abreviações.

Espero que tenham gostado, no próximo artigo vamos falar sobre os Bad Smells da Família Dispensables. 

May the force be with you!

Referências


Obrigado pela leitura!