code smell
expressãoprogramação
Um sinal superficial no código que sugere um problema de design mais profundo, sem ser em si um defeito.
Métodos longos, lógica duplicada e classes gigantes são maus cheiros clássicos: o código funciona, mas algo está errado e tende a doer depois. Kent Beck cunhou o termo e Martin Fowler o popularizou como um convite a considerar a refatoração, não como um veredito automático.
Um code smell é uma indicação de superfície que costuma corresponder a um problema mais profundo, e a metáfora faz um trabalho cuidadoso: um cheiro não é um defeito, é uma pista de que algo pode estar errado. Kent Beck cunhou o termo e Martin Fowler o popularizou na literatura de refatoração, escolhendo deliberadamente uma palavra que implica suspeita, e não prova.
O catálogo clássico vale conhecer porque dá nome a coisas que todo mundo reconhece. Métodos longos, classes grandes, listas de parâmetros extensas, código duplicado, inveja de recurso, em que um método se interessa mais por outra classe que pela sua, e cirurgia com espingarda, em que uma mudança exige edições em uma dezena de lugares. Nomeá-los transforma um desconforto vago durante a revisão numa observação específica sobre a qual alguém pode agir.
A falha é tratar o catálogo como livro de regras. Um método longo que se lê com clareza e faz uma coisa está bem, e quebrá-lo mecanicamente em seis pequenos pode tornar a lógica mais difícil de seguir. Cheiros são convites à investigação, não infrações, e uma base de código otimizada para eliminar todo cheiro está otimizando para uma métrica, e não para os humanos que precisam lê-la.
Também conhecido como: smell, bad smell in code
Fontes
- Fowler, 'Refactoring' (1999), attributing Kent Beck