Você sabe o que é Bad Smell?
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:
- Rua
- Distrito
- Cidade
- Número
- Código Postal
- 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!
Conteúdos relacionados
Confira os conteúdos produzidos pela nossa equipe
Sua história de sucesso começa aqui
Conte com nosso apoio para levar as melhores integrações para o seu negócio, com soluções e equipes profissionais que são referência no mercado.