JoonasC / ot-harjoitustyo

0 stars 0 forks source link

Koodikatselmointi #1

Open heinapaa opened 3 years ago

heinapaa commented 3 years ago

2.5.2021 klo 10:04

En saanut ohjelmaa auki netbeansilla, eikä ohjelman suorittaminen jar:in avulla myöskään onnistunut (virhe "Error initializing QuantumRenderer: no suitable pipeline found"). Käyttöohjeita seuraamalla ohjelma lähti kuitenkin omalle koneelle ladattuna lopulta toimimaan, joten kiitos niistä.

Sovelluslogiikan osalta ohjelman rakenne on erittäin järkevä, ja jokaisella pakkauksella ja luokalla on oma selkeä toimintonsa. Ohjelmien yleistys yläluokiksi jne. lisää selkeyttä. Varsinkin model-pakkauksen luokkien metodit ovat erityisen napakoita ja selkeitä.

Metodit ja luokat on nimetty englanniksi ja selkeästi. Kaiken kaikkeaan koodia on erittäin helppo seurata, vaikka minulla on hyvin rajallisesti kokemusta esim. JavaFX:n käytöstä.

Ohjelmassa ei ole vielä toteutettu toiminnallisuutta, joka mahdollistaisi käyttäjän rekisteröinnin. Tämä lienee keskeinen puute sen toiminnallisuudelle, sillä nyt ohjelmaa ei pysty käyttämään ilman, että käy manuaalisesti ensin luomassa oikeaan kansioon oikean nimistä alakansiota (eli oletusarvoisesti omaan juurikansioon kansion, jonka nimi vastaa käyttäjänimeä).

Uuden käyttäjän luomisen olisi varmaankin järkevintä toteuttaa LogInController-luokkaan. Metodi voisi olla jotain tämän tapaista (kansion luonti toiminta vielä tarkastettava!):

    public void createUser(String user) {
        if (!Paths.get(PathUtils.getDataDir().toString(), username).toFile().exists() && !username.isEmpty())
            String path = PathUtils.getDataDir().toString();
            String directory = path.concat(user);;
            File userFolder = new File(directory);
            userFolder.mkdir();

            model.setLoggedIn(true);
            model.setLoggedInUsername(user);
            model.setErrorMessage("");
            model.renderView();
    }

Ohjelmassa on selkeästi panostettu käyttöliittymään, joka toimiikin hyvin. Käyttöliittymän eriyttäminen erillisiin luokkiin jotka saavat aina tietyn Model-olion käyttöönsä näkymän mukaan lisää ohjelman koodin selkeyttä huomattavasti.

Huomiona vielä, että tehtävänannosta poiketen ohjelma on tehty käyttäen gradlea mavenin sijaan.

JoonasC commented 3 years ago

Lisäsin juuri pari minuuttia sitten toiminnallisuuden, jolla pystyy luomaan käyttäjiä :laughing:.

heinapaa commented 3 years ago

Ajattelinkin että tämä on varmasti tulossa 🤣

Sellainen tuli vielä mieleen, että nyt uutta käyttäjää kirjatessa Ohjelma testaa, löytyykö hakemistosta tiedosto oikealla nimellä. Haku ei kuitenkaan spesifioi, että kyseisen tiedoston pitäisi olla kansio-tyyppinen. Eli kun loin hakemistoon tyhjän (teksti)tiedoston käyttäjänimelläni, päästi ohjelma minut kirjautumaan sisään mutta tällöin kontaktien luonti ei tietenkään onnistunut.

Käytännössä on varmaan aika epätodennäköistä, että käyttäjä ryhtyy sooloilemaan ja luomaan näitä tiedostoja manuaalisesti itse, mutta jos oikein haluaisi olla varmistaa toimivuuden niin sisäänkirjautumisen yhteyteen voisi lisätä testin siitä, että hakemistosta löytyvä käyttäjänimen mukainen tiedosto on nimen omaan kansio.

JoonasC commented 3 years ago

Hyvä pointti, pitää korjata tuo