-
Notifications
You must be signed in to change notification settings - Fork 0
Description
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änKurssin 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.
CollectionConversionsjaKnapsack. 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!