Code smells
Você sabe o que é um “code smell“? Bem, mesmo sem saber a definição, são muito grandes as chances de que você já tenha se deparado com um.
Code Smell é um sintoma de que algo no código pode estar errado. Geralmente indica a necessidade de um refactoring ou de alteração estrutural da aplicação.
Alguns code smells muito comuns são:
- Lazy class - uma classe “burra”, ou seja, que faz muito pouco (os famosos BOs, TOs e etc, comuns no mundo Java);
- Feature envy - uma classe que utiliza excessivamente os serviços de outra;
- Contrived complexity - uso forçado de design patterns complexos onde não são necessários;
- Inappropriate intimacy - uma classe que depende de detalhes de implementação de outra.
E você, o que já viu por aí?
Veja também:
Code smells taxonomy
Refactoring.com
January 29, 2008 | Filed Under Desenvolvimento, Dicas
Comments
4 Responses to “Code smells”
Leave a Reply

Um livro excelente que ajuda muito a detectar os “cheiros ruins” no código e vale a pena dar uma lida é:
Refactoring: Improving the Design of Existing Code
http://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Technology/dp/0201485672/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1201623790&sr=8-1
Ele também tem uma versão em Portugues que tem uma tradução também muito boa, que pode ser encontrado em:
http://compare.buscape.com.br/refatoracao-aperfeicoando-o-projeto-de-codigo-existente-martin-fowler-8536303956.html
Realmente Thiago. Não mencionei no post, mas o livro de Martin Fowler virou praticamente um guia oficial do refactoring.
Um catálogo atualizado de técnicas de refatoração pode ser emcontrado em: http://www.refactoring.com/catalog/index.html
Não seira “BAD smell” ao invés de “code smell”? Pois se me lembro bem o próprio Martin Fowler usa o termo Bad Smell.
Abração,
Felipe, isso varia de literatura para literatura mesmo.
Veja dois possíveis significados da palavra “smell”:
- To have or emit an unpleasant odor; stink: “This closet smells”.
- To appear to be dishonest; suggest evil or corruption.
E as possíveis traduções:
n. - aroma (m), perfume (m), cheiro (m), odor (m), mau cheiro (m)
Na Wikipedia se utiliza “code smell” mesmo. Questão de preferência.