Koodihaju (engl. code smell) on nimitys ohjelman lähdekoodissa esiintyville piirteille, jotka ovat vihjeitä koodissa oleville suuremmille ongelmille. Koodihajut eivät ole ohjelmointivirheitä ja ohjelma ei toimi väärin niiden vuoksi, mutta ne vaikeuttavat kehitystyötä ja lisäävät virheiden riskiä.[1]
Haiseva koodi ei estä ohjelman suoritusta tai saa sitä toimimaan väärin. Koodihajut ovat subjektiivisia, tarkoittaen, että kaikki eivät pidä samoja asioita yhtä ongelmallisina, jos ollenkaan. Eroja voi myös olla ohjelmointikielien ja ohjelmointiparadigmojen välillä.
Koodihajujen löytämiseksi on kehitetty lukuisia työkaluja, kuten SonarCube.