Les odeurs de code ne sont pas des erreurs ou des bogues, mais elles peuvent indiquer des problèmes potentiels ou des inefficacités qui peuvent affecter la réutilisation des logiciels. Certaines odeurs de code courantes qui entravent la réutilisation des logiciels incluent le code dupliqué, les longues méthodes ou classes, l’envie de fonctionnalités et l’intimité inappropriée. Le code dupliqué peut être refactorisé en extrayant des fonctionnalités courantes dans des méthodes, des classes ou des interfaces et en utilisant l’héritage ou la composition pour les réutiliser. Les méthodes ou classes longues peuvent être refactorisées en les décomposant en unités plus petites et plus cohérentes, et en appliquant le principe de responsabilité unique et le principe de moindre connaissance. L’envie de fonctionnalité peut être refactorisée en déplaçant la méthode ou la classe vers la classe appropriée, ou en utilisant la délégation ou l’injection de dépendance pour réduire le couplage. L’intimité inappropriée peut être refactorisée en utilisant l’abstraction, les interfaces ou l’héritage pour définir le contrat entre les classes et appliquer le principe de moindre connaissance et la loi de déméter.