En pidä flux-arkkitehtuurista (josta opin kun nuorempana tein javascriptillä redux-softaa (hei olin nuori ja tarvitsin rahaa :D)). Yhden ominaisuuden työstämisen vaatii monessa paikassa tosi monen liikkuvan osan tunkkaamista. Toki se on akateemisesti tosi elegantti malli, ja oikeassa kontekstissa oikein käytettynä tällainen malli, jossa softan alkuperäinen tila tunnetaan, ja nykyinen tila muodostetaan redusoimalla läpi lista komentoja alkuperäisenä syötteenä alkuperäinen tila, mahdollistaa muutaman tosi siistin ominaisuuden (esim. undo-lista tulee lähes ilmaisena). Mutta hirveen työläs.
Pidän (marginaalisesti) enemmän clojurescript/reagent mallista, jossa yhteen ominaisuuteen liittyvät liikkuvat osat pysyvät yhden emacs-puskurin sisällä, kun ei tarvitse hyppiä tyypit speksaavan puskurin, json-serialisoinnin speksaavan puskurin ja jumalattoman romaanin mittoihin paisuneen reducerin välillä, vaan voi vaan kirjoittaa että tässä on http-pyynnön speksit, tässä on eventti joka laukaistaan jos serveri palauttaa 200, tässä eventti jos paluuarvo != 200, ja serialisointi json:stä hyödyllisempiin muotoihin tulee ilmaiseksi. Toki clojurescriptissä on sitten omat ongelmansa, joiden takia en pidä sitä parhaana vaan korkeintaan vähiten huonona tapana tehdä selainsoftaa, mutta keskustellaan siitä joskus myöhemmin tarkemmin :D
Elm, jolla tämänkin saitin selainkoodi on kirjoitettu , on käsittääkseni ensimmäinen ekosysteemi jossa flux-malli speksattiin ja jossa se nousi isoksi muoti-ilmiöksi. Aloin toteuttaa tähän selaimessa toimivaa kuvien lisäys/hallintakäyttöliittymää, koska emacsiin kirjoittamani vastaava on särki enkä jaksa emacs lispiä just nyt ja haluaisin kohdistaa kuvaspämmini twitterin sijaan feuerx.net/blogiin. Aloin äkkiä tuskastella sitä kuinka C-x C-b näppäinyhdistelmä kuluu kun joudun hyppimään Main.elmissä sijaitsevan reducerin ja puskurin-jossa-oikeat-työt-tehdään välillä.
Mutta, kun sain liikkuvat osat riittävän hyvin paikoilleen että oli aika testata, heitin sovelluksen kääntäjälle ja sain takaisin listan paikoista joita en ollut huomannut kirjoittaa loppuun.
Flux-ottaa, mutta staattinen tyyppijärjestelmä myös antaa. En oo täysin vakuuttunut siitä onko lopputulos etumerkiltään millainen, mutta en myöskään oo vakuuttunut että selainkoodin tunkkaamisesta voisi koskaan tulla täysin kivutonta, ja on tää mukavampaa kuin se javascriptillä reduxin tunkkaaminen aikoinaan :D