Reaktiivisen ohjelmointiparadigman soveltaminen Angularissa
Virtanen, Ville (2023)
Virtanen, Ville
2023
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2023121537577
https://urn.fi/URN:NBN:fi:amk-2023121537577
Tiivistelmä
Reaktiivisella ohjelmointiparadigmalla tarkoitetaan tapahtumapohjaista interaktiivisten sovellusten ohjelmointiin käytettyä ohjelmointimallia. Reaktiivinen ohjelmointi on useimmiten myös deklaratiivista sekä funktionaalista ja sitä voidaan ajatella vastakkaisena ohjelmointityylinä perinteisemmälle imperatiiviselle ja proseduraaliselle ohjelmoinnille. Reaktiivisessa ohjelmoinnissa muuttujien arvot on sidottu toisiinsa, ja ne reagoivat muutoksiin sekä päivittyvät automaattisesti.
Tässä opinnäytetyössä tutkittiin reaktiivista ohjelmointia ja esiteltiin sen käyttämistä Angular-ohjelmointikehyksessä. Angular on interaktiivisten verkkosovellusten kehittämiseen luotu viitekehys, joka tarjoaa monia reaktiivisen ohjelmoinnin mahdollistavia työkaluja. Näistä tärkeimpänä lienee RxJS-kirjasto, joka on kokoelma reaktiiviseen ohjelmointiin JavaScriptillä suunniteltuja välineitä. Opinnäytetyössä refaktoroitiin olemassa olevan Angular-sovelluksen toiminnallisuus, joka oli aiemmin toteutettu imperatiivisesti ja proseduraalisesti.
Toimeksiantajana opinnäytetyölle toimi CGI Suomi Oy, joka toteuttaa IT-ratkaisuja julkiselle ja yksityiselle sektorille. Toimeksiannon tarve syntyi halusta varmistaa ja parantaa sovelluksen frontend-koodin laatua. Angular soveltuu erinomaisesti reaktiiviseen ohjelmointiin, mutta valitettavan pieni osa sovelluskehittäjistä on sisäistänyt reaktiivisen ohjelmoinnin idean ja käyttää Angularin ja RxJS:n työkaluja epäoptimaalisesti. Työn yhtenä tavoitteena oli osoittaa, miten reaktiivisesti kirjoitettu ohjelmakoodi tekee siitä luettavampaa, ymmärrettävämpää, yksinkertaisempaa ja muokattavampaa nostaen huomattavasti koodin laatua. Täten omaksumalla reaktiivisen ohjelmointimallin on toimeksiantajan mahdollista saavuttaa merkittäviä koodin laadullisia parannuksia.
Opinnäytetyön teoreettinen viitekehys muodostui reaktiivisen ohjelmoinnin määritelmien tutkimisesta sekä arvioimisesta ja Angularissa käytettävien reaktiivisten työkalujen esittelemisestä. Lisäksi käsiteltiin tyypillisiä reaktiivisten työkalujen väärinkäytöksiä, joita tulisi pyrkiä välttämään. Käytännön osuudessa tutkittiin vanhaa koodipohjaa pyrkien löytämään siitä mainitut väärinkäytökset. Nämä osuudet koodista kirjoitettiin uudelleen reaktiivisesti. Lopputuloksena on reaktiiviseksi refaktoroitu toiminnallisuus, jota toimeksiantaja voi käyttää malliesimerkkinä sovelluksen jatkokehityksessä.
Tässä opinnäytetyössä tutkittiin reaktiivista ohjelmointia ja esiteltiin sen käyttämistä Angular-ohjelmointikehyksessä. Angular on interaktiivisten verkkosovellusten kehittämiseen luotu viitekehys, joka tarjoaa monia reaktiivisen ohjelmoinnin mahdollistavia työkaluja. Näistä tärkeimpänä lienee RxJS-kirjasto, joka on kokoelma reaktiiviseen ohjelmointiin JavaScriptillä suunniteltuja välineitä. Opinnäytetyössä refaktoroitiin olemassa olevan Angular-sovelluksen toiminnallisuus, joka oli aiemmin toteutettu imperatiivisesti ja proseduraalisesti.
Toimeksiantajana opinnäytetyölle toimi CGI Suomi Oy, joka toteuttaa IT-ratkaisuja julkiselle ja yksityiselle sektorille. Toimeksiannon tarve syntyi halusta varmistaa ja parantaa sovelluksen frontend-koodin laatua. Angular soveltuu erinomaisesti reaktiiviseen ohjelmointiin, mutta valitettavan pieni osa sovelluskehittäjistä on sisäistänyt reaktiivisen ohjelmoinnin idean ja käyttää Angularin ja RxJS:n työkaluja epäoptimaalisesti. Työn yhtenä tavoitteena oli osoittaa, miten reaktiivisesti kirjoitettu ohjelmakoodi tekee siitä luettavampaa, ymmärrettävämpää, yksinkertaisempaa ja muokattavampaa nostaen huomattavasti koodin laatua. Täten omaksumalla reaktiivisen ohjelmointimallin on toimeksiantajan mahdollista saavuttaa merkittäviä koodin laadullisia parannuksia.
Opinnäytetyön teoreettinen viitekehys muodostui reaktiivisen ohjelmoinnin määritelmien tutkimisesta sekä arvioimisesta ja Angularissa käytettävien reaktiivisten työkalujen esittelemisestä. Lisäksi käsiteltiin tyypillisiä reaktiivisten työkalujen väärinkäytöksiä, joita tulisi pyrkiä välttämään. Käytännön osuudessa tutkittiin vanhaa koodipohjaa pyrkien löytämään siitä mainitut väärinkäytökset. Nämä osuudet koodista kirjoitettiin uudelleen reaktiivisesti. Lopputuloksena on reaktiiviseksi refaktoroitu toiminnallisuus, jota toimeksiantaja voi käyttää malliesimerkkinä sovelluksen jatkokehityksessä.