Koodin väritys

Koodin väritys (tunnetaan myös nimillä koodin korostus, syntaksin väritys ja syntaksin korostus, ) on joidenkin tekstieditorien tukema ominaisuus, joka värjää ja korostaa tekstiä (esimerkiksi lähdekoodia) eri värityksin ja muotoiluin visualisoiden näin tekstin rakenteen selkeämmäksi.

Koodin värityksestä on apua muun muassa virheiden havaitsemisessa ja väritys oikein toteutettuna nopeuttaa kehittäjää hahmottamaan käsiteltävän kokonaisuuden nopeammin kuin tavallisesti.

Historia
LEXX (, tunnetaan myös nimellä LPEX), ohjelma jolla kirjoitettiin Oxford English Dictionarya vuonna 1985 oli todennäköisesti ensimmäinen editori joka tuki koodin väritystä.

Koodin väritys ominaisuutena
Suurin osa tekstieditoreista käyttää koodin värittämiseksi erilaisia säännöllisiä lausekkeita joiden avulla voidaan heuristisesti löytää tekstistä värjättävät ja korostettavat kohdat. Muistin- sekä prosessoritehon käytön osalta säännölliset lausekkeet ovat huomattavasti tehokkaampia verrattuna tilanteeseen, jossa jokaisesta korostettavasta kielestä sisällytettäisiin oma jäsennin ohjelmaan.

Suurin haittatekijä säännöllisillä lausekkeilla toteutetuissa koodin värityksissä on menetelmän hitaus verrattuna ohjelmointikielen omaan jäsentimeen. Lisäksi ongelman aiheuttaa värityksen epätäydellisyys. Näiden ongelmien paikkaamiseksi säännöllisiä lausekkeita tarvitaan useita, ja useat säännölliset lausekkeet taas hidastaa itse tekstieditorin toimintaa.

Tämä ongelma on kierretty esimerkiksi siten, että koko tiedoston lukemisen ja värittämisen sijasta väritetään vain näkyvä osa, tai tiedoston sisältö luetaan takaperoisesti tiettyyn riviin asti synkronoinnin saavuttamiseksi.

Esimerkki koodin värityksestä
Alla on yksinkertainen esimerkki koodin värityksestä C++-kielessä:
// Luodaan kaikki ikkunat
for (int i = 0; i < max; i++)
{
    wins[i] = new Window();
}

Esimerkissä kommentti erottuu selkeästi ohjelmakoodista, ja muut osa-alueet (esimerkiksi varatut avainsanat) tulevat selkeästi esiin peruskoodista värityksen ansiosta.

Ohjelmointi