Kannattaako logiikka ja käyttöliittymä eriyttää?

Koodatessamme syksyn viidennessä Java-tehtävässä erillisen Peliruudukko-luokan huolehtimaan pelin logiikasta, emme sen kummemmin miettineet mikä merkitys logiikan erottamisella käyttöliittymästä on. Vaikka ensi alkuun saattaakin tuntua että se on ihan sama mihin luokkaan mitkäkin ohjelman ominaisuudet toteuttaa, niin ohjelman rakenteen järkevä miettiminen ei suinkaan ole ihan huuhaata.

Etuja logiikan ja käyttöliittymän eriyttämisestä on useita. Ohjelmalogiikalle voidaan vaikka tehdä useita erilaisia käyttöliittymiä, jolloin samaan tietoon ja ominaisuuksiin pääsee käsiksi monella eri tavalla. Käyttöliittymissä on myös usein monia järjestelmäspesifejä asioita, jolloin eriyttäminen helpottaa erilaisen käyttöliittymien kehittämistä eri järjestelmille. Logiikan toteuttamisessa ei tällöin tarvitse välittää näistä järjestelmäkohtaisista asioista.

Kun ohjelman logiikka toteutetaan erillään käyttöliittymästä, niin myös ohjelman kehittämistä voidaan tehdä huomattavasti joustavammin.  Kun sovitaan tarkasti miten ohjelman eri osat kommunikoivat keskenään, niin ohjelmaa voi olla vaikka kehittämässä useita henkilöitä samanaikaisesti. Ohjelmaa myöskään harvoin suunnitellaan kerralla valmiiksi, jolloin mahdollisuus kehittää eri osia erikseen helpottaa huomattavasti ohjelman jatkokehitystä.

Varjopuolena logiikan ja käyttöliittymän erottamisessa on joissain tilanteissa ohjelman rakenteen turha hajoaminen, kun toisiinsa liittyviä asioita toteutetaan erillään. Lisäksi logiikan ja käyttöliittymän eriyttäminen johtaa väistämättä siihen, että eri luokkien välillä täytyy siirtää entistä enemmän tietoa. Käyttöliittymän täytyy välittää kaikki asiaan liittyvät parametrit mallille, ja joissain tilanteissa niitä saattaa olla aikamoinen määrä. Vaarana on myös epäkonsistentti tila logiikan ja käyttöliittymän välillä, jos tieto ei ole vaihtunut niiden välillä niin kuin pitäisi.

Yksi vastaus to “Kannattaako logiikka ja käyttöliittymä eriyttää?”

  1. Yaz Okulu sanoo:

    does anyone knows if there is any other information about this subject in other languages?

Jätä kommentti