Los olores de código no son errores o errores, pero pueden indicar posibles problemas o ineficiencias que pueden afectar la reutilización del software. Algunos olores comunes del código que dificultan la reutilización del software incluyen código duplicado, métodos o clases largos, envidia de características e intimidad inapropiada. El código duplicado se puede refactorizar extrayendo la funcionalidad común en métodos, clases o interfaces y utilizando la herencia o la composición para reutilizarlos. Los métodos o clases largos pueden refactorizarse dividiéndolos en unidades más pequeñas y más cohesivas, y aplicando el principio de responsabilidad única y el principio del menor conocimiento. La envidia de características se puede refactorizar moviendo el método o la clase a la clase adecuada, o mediante la delegación o la inyección de dependencias para reducir el acoplamiento. La intimidad inapropiada puede ser refactorizada mediante el uso de abstracción, interfaces o herencia para definir el contrato entre clases y aplicando el principio del mínimo conocimiento y la ley de deméter.