Skip to content

Vertaisarviointi 2 #2

@strax

Description

@strax

Lähdekoodi ladattu 17.2. klo 21.17

Android-sovelluksen tekeminen on mielenkiintoinen valinta! En omista yhtään Android-laitetta, ja Android Studion lataaminen emulaattoria varten tuntui turhan työläältä, joten sovelluksen ajaminen jäi tällä kertaa väliin. Luin koodin kuitenkin läpi ja ensimmäiseksi huomasin, että useassa paikassa dokumentaatio on melko vähäistä. Joissain metodeissa kommentit on kirjoitettu rivikommentteina tyyliin

// dokumentaatio tähän

Kurssin loppuvaiheessa pitää käsittääkseni generoida kommenteista erillinen dokumentaatio, joten metodien kommentointia parantaessa on kätevämpää käyttää Javadoc-kommentteja:

/**
  * Metodin kuvaus
  * @param String arg1 Ensimmäinen argumentti
  * @returns jotain palauttaa
  */
public void foo(String arg1) ...

Tällöin editorit osaavat näyttää metodien dokumentaation automaattisesti ja staattisen dokumentaation generointi onnistuu ilman lisävaivaa.

Sitten arkkitehtuurista: tällä hetkellä on vähän vaikeaa erotella, mitkä luokista liittyvät tietorakenteisiin / algoritmeihin ja mitkä ovat UI-luokkia käyttöliittymää varten. En löytänyt knapsack-algoritmien toteutuksia, mutta oletan että niitä ei siis ole vielä toteutettu? Löysin sittenkin AlgoUtilseista! Lisäksi jotkut API-luokista sisältävät sekä käyttöliittymäkoodia että API-kutsujen tekemistä – nämä voisi erotella omiin luokkiinsa.

Pari juttua nimeämisestä:

  • Javassa käytäntö on nimetä pakettien nimet kaikki pienellä, esim. com.sofivanhanen.yarnie.api.
  • MiscUtils ja AlgoUtils -luokat eivät ole kovin kuvaavia, ja vaarana onkin, että niistä muodostuu eräänlainen "kaatopaikka" johon laitetaan sekalaisia funktioita. Tällä hetkellä AlgoUtils näyttäisi sisältävän knapsack-algoritmin ja MiscUtils pari konversiota taulukoista listoihin ja takaisin – selkeämmät nimeämiset näille voisivat olla esim. CollectionConversions ja Knapsack. Kannattaa miettiä, voisiko MiscUtilsin toiminnallisuuden toteuttaa kokonaan listaluokan avulla.

AlgoUtilsista vielä sen verran että kannattaa tutustua Javan Comparator-rajapintaan jonka avulla voit toteuttaa olion, joka tietää miten kahta eri Pattern-listaa verrataan keskenään (eli vertailemalla niiden "yardagen" summia). Näin et joudu sitomaan listarakennettasi Patterneihiin vaan voit toteuttaa geneerisen listan joka toimii kaikenlaisten olioiden kanssa.

Tsemppiä loppukurssille!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions