Koodihaju () 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ä.
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.
Esimerkkejä
Liian pitkät funktiot. Funktiot joilla on liian monta parametria. Yleensä rajana mainitaan enemmän kuin 3 tai 4. Funktion testattavuus (koodikattavuus) kärsii kasvavasta määrästä parametreja. Redundanttisuus eli tarpeeton koodin toisteisuus. Kuollut koodi, eli koodi jota ei käytetä ollenkaan. Ratkaisut jotka tekevät koodista tehotonta, liikaa resursseja käyttävää (kuten muisti) tai hidastavat suoritusta. Muuttujien alustamattomuus. Liiallinen primitiivien käyttö tilanteissa jossa voitaisiin käyttää esimerkiksi enum Liian suuret tai moneen tarkoitukseen luodut luokat. Vääränlainen perintä. Epäkuvaava nimeäminen tai vääränlainen muuttujien nimeäminen. Tietotyypin sisällyttäminen muuttujan nimeen. Suunnittelumallien käyttämättömyys. Vanhentuneet tai virheelliset kommentit. Turhat rakenteet. Esimerkiksi tilanteet joissa erillisen luokan luominen ei ole tarpeen, sillä asian voisi tehdä kielen omilla ominaisuuksilla. Tulevaisuuteen varautuva koodi, eli ohjelmakoodin sisällyttämistä jotain (todennäköistä tai mahdollista) tulevaisuuden tarvetta varten. Liiallinen geneerisyys. Liiallinen monimutkaisuus, esimerkiksi pitkät anonyymit funktiot. Liian löyhät näkyvyysrajoitukset tai vakioiden käyttämättömyys.
Katso myös Ohjelmiston testaaminen Refaktorointi
Lähteet
Aiheesta muualla Smells to refactorings (PDF)
Luokka:Ohjelmointi