Creators
5
min de leitura
19 de fevereiro de 2021

Você sabe o que é Bad Smell ?

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

Você já ouviu falar sobre Bad Smell? Esta semana vamos nos concentrar neste tópico em nosso blog com uma série de posts falando sobre a chave insights relacionada a este assunto, que é tão importante na vida de um Desenvolvedor. Você sabia que um código tem sua saúde? Sim, ele tem! Você sabe como verificar se ele é saudável?

A maneira ideal de escrever um código corretamente é lembrar os ensinamentos de SÓLIDO, Código Limpo e usar corretamente a orientação de objetos.

Se você não tem idéia do que é SÓLIDO ou Código Limpo, deixarei na seção de referência os links para os posts que escrevi sobre os princípios SÓLIDOS e um sobre Código Limpo do blog balta-io.

Há alguns fatores, como prazos cada vez mais curtos, documentação abstrata e até mesmo deficiência técnica, que normalmente nos fazem criar códigos insalubres e que não correspondem ao que foi solicitado ou não é a melhor solução para esse problema.

Para descobrir se seu código é saudável, você não precisa assistir House ou Greys Anatomy. Quando não é saudável, começamos a encontrar vários sintomas de que o código não está bem, identificamos o famoso "Bad Smell" ou "Code Smell". Portanto, prepare-se, higienize suas mãos, coloque sua máscara e analisaremos nossos códigos.


Code Smell, Bad Smell?

De acordo com Martin Fowler, um Bad Smell acontece quando o código é mal projetado ou quando a implementação escolhida estava errada. Estes sintomas nos ajudam a verificar alguns problemas no código, como por exemplo:

  • Indicar ou corresponder a um problema profundo em um sistema.
  • Necessidade de refatoração.
  • Verifique quais áreas do código devem ser limpas. (Regra do escoteiro)

 

E como podemos lidar com isso?

Primeiro, usaremos o princípio da surpresa mínima onde seguimos as regras abaixo:

  • Faça exatamente o que o usuário espera.
  • Seja simples (KISS).
  • Seja claro, seja consistente.

 

Bad Smell e suas classificações

Há algumas categorias que utilizamos para saber que tipos de Bad Smell estamos enfrentando. Essas categorias são:

  • Bloaters
  • Abusadores da orientação a objetos
  • Impedidores de mudança
  • Dispensas
  • Acopladores
  • Obfuscadores 

Neste posto, vamos nos concentrar na categoria Bloaters.


Mas o que é um Bloater?

Bloater é uma categoria que é encontrada sempre que um código cresce desnecessariamente com freqüência. Isto geralmente afeta a velocidade e o processamento do código.

A prevenção para esta categoria é a criação de códigos enxutos e focalizados.

Um Bad Smell que pode ser classificado como um Bloater é a Obsessão Primitiva.


Obsessão Primitiva

Ocorre quando muitos tipos primitivos são usados ao invés de estruturas de "abstração". Pode tornar o código menos legível, e não intencional, e isto torna a leitura extremamente difícil, resultando em duplicação, já que os dados não são organizados em uma única estrutura.


Vamos ver um exemplo para nos ajudar a entender

Na imagem acima, temos uma classe chamada PrimitiveObsession, que contém vários campos como tipos primitivos. Quando construímos classes contendo vários tipos primitivos, geralmente, à primeira vista, eles não parecem muito organizados, parecendo um código totalmente processual e sem expressão. Como o construtor contém vários parâmetros, ele não é tão legível.

Portanto, vamos refatorar essa classe e resolver os problemas.

A primeira coisa seria usar a Orientação a Objetos para criar uma abstração que represente um objeto que agregue campos fazendo sentido para o contexto. Em nosso caso, temos os campos:

  1. Rua
  2. Distrito
  3. Cidade
  4. Número
  5. Código Postal
  6. Informações adicionais


Assim, criamos um tópico chamado Endereço que conterá todas essas propriedades.

E depois deste "refator", a classe se parece com isto:

Observe que a visibilidade da classe é elegante, muito mais enxuta e simples para identificar o conteúdo.

Espero que tenham gostado! No próximo post, falaremos sobre o Bad Smell da Família Obfuscates.

May the force be with you!

Obrigado pela leitura!