19.8.2018

Ohjelmoinnin iloja, osa 2

Oli mielessä jo, että pitäisi hieman taas kirjoitella ohjelmoinnin kiroista. Sattumalta tuli kuvasivustolla vastaan pari kuvaa, jotka kuvaavat hyvin tätä touhua.



Tälläkin hetkellä minulla olisi mielessä valmiina ajatuksia sellaisesta Kertalaaki™-luokan ohjelmasta, jota ei ole ennen nähty. Olen huomannut, että töihini liittyvällä alalla melko moni ohjelma on suoraan sanottuna paskaa, ja vielä hinnakasta sellaista. Niillä saa tehtyä vain yhden pienen osa-alueen ja senkin vain tietyn kaavan mukaan. Jos vastaan tulee hieman tästä kaavasta poikkeava malli, niin huhheijaa siinäpä sitä saa ihmetellä, että millähän taikatempuilla tämäkin pitäisi ratkaista. Monesti noita ohjelmia käyttäessä on tullut mieleen, että ohjelmaa on lähdetty tekemään siitä näkökulmasta, miten asioita on tehty ennen kynällä ja paperilla. Eli vähän siihen tyyliin, että kunhan saadaan samanlainen tulos ulos, niin muulla ei ole väliä. Monesti se tarkoittaa sitä, että samoja tietoja saa hakata eri paikkoihin ja kaikenlaiset älykkäät toiminnot loistavat poissaolollaan. Mitä tulee tuohon minun hahmottelemaan ohjelmaan, niin siinä asioita tehtäisiin hieman eri näkökulmasta katsottuna ja kaikki apinatason hommat olisi automatisoitu parin napin painalluksen taakse. Mutta kun ei niin ei. Kun taidot ovat ohjelmoinnin osalta tuollaista kuvan alemman osan kategoriaa, niin tuollaisen kaiken ratkaisevan hypersuperduper-ohjelmiston tekeminen on vain niitä haaveasioita.

Noh, kehitystä tapahtuu pikku hiljaa. Olen yrittänyt tehdä yhtä pientä ohjelmaa valmiiksi ja itse asiassa kesäloman aikana homma edistyi huomattavasti ja tänä viikonloppuna mentiin taas eteenpäin. Ohjelma on tähän mennessä tehty uusiksi parikin tai ehkä kolmekin kertaa. Ensimmäiseksi meni mönkään tietojen haku tietokannasta. Tai ei se nyt mönkään mennyt mutta hommasta olisi tullut hyvin äkkiä melko työlästä. Ihan näin vinkkinä: relaatiomaisten eli toisiinsa linkitettyjen tietojen haku järkevästi on yksinkertaisilla keinoilla melko puuduttavan työlästä. Onneksi tähän ovat viisammat koodanneet parempia työkaluja. Toisena kohtana piti koodata uusiksi se varsinainen ohjelman ydin, jolla käpistellään niitä tietokannasta haettuja tietoja. Ensimmäinen yritys oli sellainen sekava pökäle, jossa tietojen käsittely meinasi vähän levahtaa sinne ja tänne. Toisella iteraatiokierroksella keskitin tiedonkäsittelyn yhteen paikkaan, jolloin hommasta tuli hieman järkevämpi. Kolmannella kerralla piti sitten veivata parempaan uskoon käyttöliittymään liittyviä asioita. Olihan se toimiva ensimmäisellä kerrallakin mutta oli se sellainen purkkaviritys, että parempi oli vähän parannella sitäkin osa-aluetta.

Sen koodin toimivuuden voi melkein jo nähdä siitä koodin ulkoasusta. Jos puhutaan jostain metodista/funktiosta, joka tekee jonkun tietyn toiminnon, niin hyvä sellainen on tiivis ja alle yhdelle näytölliselle mahtuva pätkä. Välillä sitä tahtoo sortua ajattelemaan aina liikaa ja miettii kaikenlaisia viritelmiä ja kikotuksia. Hyvänä esimerkkinä oli ohjelman asetuksien tallennus. Mietin, että tämän asetuksen muuttuessa varmaan pitäisi lähettää joku eventti (tapahtuma), jonka toinen paikka tilaa ja tapahtuman sattuessa käsittelee sen ja tekee sitä ja tätä. Sitten yhtenä toisena päivänä tuli mieleen ajatus, että voikos sen tallentaa suoraan tästä tuonne ilman mitään kikkailuja. Ja kyllähän sen pystyi. Ooh ja Aah taas sitä tunnetta, kun hoksasi miten asian voi tehdä yksinkertaisemmin. Ei se KISS-periaate ole mikään tuulesta temmattu juttu tässäkään ohjelmoinnissa. Pitäisi osata vain pitää kaikki mahdollisimman yksinkertaisena eikä sortua monimutkaisiin näpertelyihin.

Ei kommentteja: