Zapachy kodu () – określenie dotyczące programowania. Nazywa pewne cechy kodu źródłowego świadczące o złym sposobie implementacji i będące sygnałem do refaktoryzacji.

Historia Termin został wprowadzony przez Kenta Becka w artykule Once and Only Once zamieszczonym na Wiki c2.com. Pojęcie zostało rozpowszechnione przez książkę Martina Fowlera pod tytułem Refaktoryzacja. Ulepszanie struktury istniejącego kodu. Kent Beck był współautorem rozdziału o zapachach kodu.

Przykłady Długa metoda (ang. Large method) – istnieją bardzo długie metody. Duża klasa (ang. Large class) – istnieją klasy posiadające zbyt wiele odpowiedzialności. Należy przeorganizować strukturę klas w projekcie. Zazdrość o kod (ang. Feature envy) – istnieją metody intensywnie korzystające z danych innej klasy, metoda taka powinna być przeniesiona do klasy, z której danych korzysta. Zbyt mała intymność (ang. Inappropriate intimacy) – istnieją klasy, których działanie jest zależne od implementacji innych klas. Jest to sprzeczne z ideą hermetyzacji, gdzie nie musimy znać szczegółów implementacyjnych innych klas, a jedynie ich interfejs. Odrzucony spadek (ang. Refused bequest) – istnieją klasy pochodne, które przeciążają metodę z nadklasy tak, że naruszają jej kontrakt. Jest to naruszenie zasady podstawienia Liskov. Leniwa klasa (ang.