O que é Code Smell?

Entender o que é Code Smell é fundamental para ter um código rodando em perfeitas condições. Smell, em sua tradução, é cheiro. Isso quer dizer que algo não “cheira bem” no seu código. 

Enfim, é o mesmo que usar um computador lento. Dá para usar, mas você sabe que hora ou outra, ele irá travar e precisar de conserto. E com o código não se brinca. Afinal, o que não está “cheirando bem” pode virar um bug. 

Definição

Code Smell (cheiro de código) é qualquer característica no código-fonte de um programa que possivelmente indica um problema mais profundo.

O termo foi usado pela primeira vez por Kent Beck nos anos 90, mas foi em 1999 que ele ganhou mais popularidade ao ser apresentado no livro “Refactoring: improving the design of existing code”, de Martin Fowler

Afinal, a metáfora indica bem o problema. Isso porque um cheiro é fácil de detectar, principalmente, para bons farejadores, ou melhor, bons developers que estão sempre atentos à qualidade do seu código-fonte. 

Como dito, Code Smells não são bugs, contudo, eles indicam pontos fracos que podem ocasionar falhas no presente ou no futuro. 

Como corrigir?

O melhor é prevenir, sempre! Por isso, você deve providenciar a correção do seu código-fonte quando um Code Smell identifica que algo não vai bem. 

Nesse cenário, o problema mais profundo pode ser descoberto por meio de ciclos curtos de feedback. Assim, o seu código é refatorado em etapas menores e controladas. 

Observa-se o design para examinar se há novos Code Smells espalhados. Isso, portanto, indica a necessidade de refatoração

Quais os Code Smells mais comuns?

Existem cinco tipos de Code Smells que são mais comuns no dia a dia da equipe tech de uma startup. Confira um resumo a seguir. 

Bloaters 

Bloater (inchaço) é quando um código cresce demais, já que as suas responsabilidades não foram bem definidas durante o seu planejamento. Ocorre quando o código consome responsabilidades de outras classes. 

Object-Orientation Abusers

Trata-se da violação à orientação de objetos. Assim, a aplicação inadequada total ou parcialmente da herança, polimorfismo ou encapsulamento podem provocar problemas no código. Para identificar este problema, repare se o código tem muitos ifs ou switches complexos. 

Change Preventers 

É o tipo de código que dificulta a manutenção, pois está relacionado à ideia de “código espaguete”. Ele é aquele que ao “puxar” um ponto para correção, automaticamente se atinge outros pontos. De maneira geral, códigos assim devem ser reescritos. 

Dispensables

São os trechos do código que podem ser removidos sem afetar a aplicação, como comentários longos, partes duplicadas e outros itens que deixam o código-fonte longo demais. Afinal, um código enxuto reduz a chance de erros e falhas. 

Couplers

Trata-se do alto acoplamento, que é a forma que temos de medir o quão dependente uma classe é das outras. Assim, uma boa prática da Programação Orientada a Objetos (POO) é que uma aplicação de qualidade tem baixo acoplamento. Portanto, o ideal é prevenir este problema. 

Conclusão 

Em síntese, você viu neste post o que é Code Smell, o que serve de alerta para você revisar seus códigos e evitar dores de cabeça com falhas mais graves. 

O termo faz parte do Dicionário Tech da Coodesh, que são publicações voltadas a oferecer esclarecimentos sobre os conceitos mais usados por developers. 

Aproveite para ler também outros termos do nosso Dicionário Tech

E se você está se aperfeiçoando para entrar no mercado da programação, conheça a Coodesh

Somos uma HR Tech especializada em validar as habilidades técnicas e comportamentais dos developers para, assim, encontrarem as melhores oportunidades de emprego. Faça parte da nossa comunidade e encontre a sua vaga de emprego aqui.

Transição de carreira na área de programação: vale a pena?

Como contratar desenvolvedor Sênior?