Jumalolio

Jumalolio (engl. god object) tai kaikkitietäväolio on olio-ohjelmoinnissa olio, joka viittaa moniin epäsuoriin tai kategorisoimattomiin metodeihin ja erilaisiin tyyppeihin tai niiden yhdistelmiin. Jumalolio on yleinen esimerkki antisuunnittelumallista, sillä se rikkoo olio-ohjelmoinnin periaatteita laajennettavuudesta ja ongelmien hallittavuudesta pienemmissä loogisissa osissa.

Yleinen periaate ohjelmoinnissa on, että suuret ongelmat ratkaistaan purkamalla ne ensin pienempiin kokonaisuuksiin, jotka ratkaisemalla suurempi kokonaisuus saadaan myös ratkaistua. Tällöin yhden luokan tarvitsee ratkaista vain yksi, sen oma, ongelma. Tämä vastaa myös yleisesti ohjelmoinnissa käytettyä yksivastuisuusperiaatetta. Tällä tavoin toteutetut luokat voidaan uudelleenkäyttää ja muokata helpommin kuin suuri epämääräinen luokka.

Sen sijaan ohjelma, joka käyttää jumaloliota, ei noudattele tätä lähestymistapaa. Useimmiten tällaisissa tilanteissa suurin osa ohjelman toiminnallisuudesta on rakennettu yhteen "kaikkitietävään" olioon, jonka vastuulla on pitää suurinta osaa tiedoista koko ohjelmasta sekä niitä hyödyntävistä metodeista. Tällöin olion sisältäessä paljon erilaista tietoa, sen asema muuttuu jumalan kaltaiseksi kaikenkattavaksi rakennelmaksi. Ongelmia syntyy kun muut oliot ohjelmassa tukeutuvat jumalolion käsittelemään tietoon ja vuorovaikutukseen sen kautta, sen sijaan, että ne kommunikoisivat keskenään. Kun olioon viitataan useita kertoja eri olioiden toimesta, siitä tulee tiukasti sidottu ja ohjelman ylläpitämisestä tulee monimutkaisempaa verrattuna tasaisemmin jaetussa ohjelmassa. Pienet muutokset yhden olion vuoksi voivat aiheuttaa ennaltanäkemättömiä ongelmia muissa olioissa.

Tietyissä yksityistapauksissa jumalolion luonti voi olla tarkoituksenmukaista sen suoman tehokkuuden ja keskityksen vuoksi kuten esimerkiksi mikropiirien ohjelmoinnissa, missä huollettavuus ja koodin siisteys ovat toissijaisia asioita.

Lähteet 
 Beechler, Carl. Bad Programming Practices 101 Become a Better Coder by Learning How (Not) to Program. Berkeley, CA, Apress. 2018. ISBN: 9781484234112

Olio-ohjelmointi