Mikä on tavoittamaton koodi?

Saavuttamaton koodi on ohjelmointikoodi, jota ei voida suorittaa missään yhteydessä. Syitä tähän voi olla useita, ja monet tietokoneen kielet eivät salli ohjelman suorittamista, jos koodiosa ei ole tavoitettavissa. Saavuttamattoman koodin aiheuttamat ongelmat voidaan korjata joko poistamalla ongelmallinen koodiosa tai kirjoittamalla osa koodista uudelleen, jotta osa on tavoitettavissa uudelleen.

Ohjelmistosuunnittelussa voi olla suhteellisen helppoa vahingossa luoda tavoittamaton koodi. Mikä tahansa merkittävä häiriö ohjelman kulussa voi aiheuttaa koodiosan, joka ei ole tavoitettavissa. Esimerkiksi äärettömän silmukan tahaton luominen voi tehdä kaiken sen jälkeen tulevan koodin tavoittamattomaksi, koska ei olisi mitään keinoa päästä irti silmukasta ja jatkaa ohjelmaa. Toinen tapa, jolla tämä voi tapahtua, on, jos funktio koodataan palauttamaan ennen kuin kaikki sen koodit suoritetaan. Tässä tapauksessa palautusilmoituksen jälkeinen koodi ei ole tavoitettavissa.

Saavuttamaton koodi voidaan luoda kahdella tavalla. Ensinnäkin ohjausrakenteiden virheellinen käsittely raakakoodia kirjoitettaessa voi johtaa koodin osiin, jotka eivät ole saavutettavissa. Toiseksi virheet ohjausrakenteissa, jotka eivät ole ilmeisiä koodausprosessin aikana, mutta jotka näkyvät ohjelman ajaessa, voivat myös aiheuttaa koodin, joka ei ole tavoitettavissa. Ensimmäisellä virhetyypillä on useita nimiä, mukaan lukien koodausvirhe tai syntaksivirhe, ja toinen virhetyyppi on ajonaikainen virhe. Koodausvirheet havaitaan yleensä jäsentimillä tai kääntäjillä, mutta ajonaikaiset virheet voidaan havaita vain testaamalla ja suorittamalla ohjelma sen valmistuttua.

Saavuttamaton koodi sekoitetaan usein kuolleeseen koodiin, mutta nämä kaksi ovat merkittävästi eri asioita. Kuollut koodi on koodi, joka suorittaa tietyn laskelman, mutta ei tee mitään laskutoimituksen tuloksella. Tämä ei ole sama kuin koodi, joka ei ole saavutettavissa ja jota ei koskaan suoriteta lainkaan. Sekä saavuttamaton että kuollut koodi voidaan usein poistaa ohjelmasta vahingoittumatta tai ne voidaan integroida takaisin ohjelmaan kiinnittämällä erityistä huomiota ohjelman ohjausvirtaan. Lisäksi sekä saavuttamaton että kuollut koodi voidaan yleensä havaita koodauksen aikana ja ennen ohjelman suorittamista.

Näennäisesti kauheasta määritelmästä huolimatta tavoittamaton koodi on usein suhteellisen helppo korjata. Saavuttamattoman koodin esiintyminen osoittaa aina ohjausvirran ongelman, joten ohjelman ohjausvirran huolellinen analyysi tunnistaa rikkovan koodin yleensä lyhyessä ajassa. Jos ohjelman ohjausvirtaa seurataan huolellisesti koko koodausprosessin ajan, todennäköisyys saavuttaa saavuttamaton koodi on hyvin pieni.