Inversion of control (IoC) on ohjelmointitekniikka, jossa yleistä koodirakennetta käytetään hallitsemaan useita ainutlaatuisia ja spesifisiä aliohjelmia. Tämä kääntää ylösalaisin perinteiset ohjelmointimenetelmät, joissa tietty koodi ohjaa useita uudelleenkäytettäviä ja yleisiä aliohjelmia. Ohjauksen kääntämistä käytetään tyypillisesti tilanteissa, joissa ohjelmoija tietää, että hänen ei tarvitse käyttää tiettyä koodia useammin kuin kerran, mikä mahdollistaa joustavan suunnittelun, jossa ohjelman aliohjelmat voidaan kytkeä sisään ja pois ilman olennaisia muutoksia koko ohjelmaan .
Perinteinen versus IoC -ohjelmointi
Perinteisessä ohjelmoinnissa koodin pääosa pyytää toistuvasti yleisiä aliohjelmia, jotka suorittavat yksittäisiä toimintoja. Esimerkiksi kirjanpitoa käsittelevässä ohjelmassa aliohjelmaa, joka on suunniteltu sallimaan loppukäyttäjän etsiä tiettyä tilausnumeroa, kutsutaan todennäköisesti useita kertoja ohjelman eri osissa, jolloin käyttäjä voi suorittaa tämän hyvin yleisen hakualgoritmin useita eri ohjelmalohkoja. Koodin uudelleenkäyttö yksinkertaistaa ohjelmointiprosessia, mutta aiheuttaa monimutkaisuutta, jos ohjelmoija haluaa muokata ohjelman yhden osan hakualgoritmia vaikuttamatta muihin osiin, joissa koodia käytetään.
Käyttämällä samaa esimerkkiä ohjausskenaarion käänteisenä, yksittäistä haun aliohjelmaa ei kutsuttaisi useita kertoja useilla ohjelman alueilla. Sen sijaan jokainen ohjelman osa sisältäisi oman täysin itsenäisen haun aliohjelman. Tämä pidentää ohjelman alkukoodaamiseen tarvittavaa aikaa, mutta yksinkertaistaa mahdollisia muutoksia, jotka on ehkä tehtävä myöhemmin yksittäisille aliohjelmille suunnitteluprosessissa. Yhden aliohjelman muuttaminen tietyllä alueella jättää ohjelman loppuosan täysin vaikuttamatta.
IoC: n edut
Yksi tämän tekniikan tärkeimmistä eduista on se, että se helpottaa ohjelmien suunnittelua huomattavasti, kun työskennellään laajamittaisissa tiimeissä. Koska viestintä tiimin jäsenten välillä on väistämättä yhä vaikeampaa työntekijöiden lukumäärän kasvaessa, hallinnan kääntäminen antaa jokaiselle tiimille mahdollisuuden ohjelmoida omat yksilölliset rutiinit, jolloin he voivat toimia toisistaan riippumatta. Se myös yksinkertaistaa vikojen vaikutusta järjestelmään, koska jokaisen joukkueen aliohjelmien viivästyneet virheet vaikuttavat vain heidän erityisiin ohjelman osiinsa. Tästä syystä, kun ongelmia havaitaan yhdessä järjestelmän osassa, muun ohjelman tulee pysyä täysin toiminnassa.
IoC: n haitat
Vaikka ohjauksen kääntäminen voi yksinkertaistaa ohjelmasuunnittelua, se vaatii ennakkotietoa objektien suunnittelusta. Vaikka jokainen rutiini voidaan ohjelmoida yksilöllisesti, IoC -luojan on tiedettävä, kuinka ohjelmoida jokainen kohde, jos muutoksia on tehtävä, joten aloittavan ohjelmoijan ei ole aina helppoa käyttää IoC: tä. Lisäksi, koska jokainen rutiini toimii itsenäisesti, ne kaikki näkyvät ulkomaailmaan, mikä saattaa joillekin yrityksille olla paheksuttu.