Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Koodikatselmointi #1

Open
InglouriousObjects opened this issue Dec 8, 2019 · 1 comment
Open

Koodikatselmointi #1

InglouriousObjects opened this issue Dec 8, 2019 · 1 comment

Comments

@InglouriousObjects
Copy link

Kloonattu 4.12.2019 klo 2235

Sovelluksesta

Ensimmäisenä huomiona arviotani aloittaessani oli sovelluksen toimivuus. Kääntelypeli0.0.1.jar sovellus ei avautunut fuksiläppärini Java 11-ympäristössä, eikä myöskään etäyhteyden kautta virtuaalityösasemassa. Myöskään koodin ajaminen Java 8 -ympäristössä Netbeans 8.2 with TMC:llä ei käynnistänyt sovellusta. Onnellinen loppu kuitenkin seurasi, kun generoin suoritettavan jarin, ja sain sovelluksen käynnistymään. Tähän huomiona, että kannattaa vielä varmistaa generoidun jarin toimivuus virtuaalityöasemassa, jos et näin ollut jo tehnyt.

Koodin laatu

Välihuomautuksena, että katselmoija on kokematon ohjelmoija, joten tämä on myös hyvä lukijan pitää mielessä miettiessään annettuja arvioita tai kehitysehdotuksia.

Koodi oli kauttaaltaan kaunista ja noudatti OhPessa ja OhJassa opittuja hyviä käytänteitä. Luokat, metodit, attribuutit, parametrit ja muuttujat olivat selkeästi nimettyinä. Luokkien kohdalla oli käytetty Isoja alkukirjaimia ja yleisesti käytössä oli oikeaoppisesti camelcase-tyyli. Harjoitustyön ohjeiden mukaisesti kaikki nimettävä oli nimetty englanniksi.

Checkstyle ilmoitti virheen liian pitkästä metodista Level-luokassa koskien public void gravitate metodia alkaen riviltä 91. Sanoisin itse, että tuo voisi lukijan näkökulmasta tuossa olla tuollaisenaan, sillä kyseessä on selkeä metodi switch casella. Lukija saa metodista selvää, eikä 20 rivin sääntö ole mikään absoluuttinen tutkittuun tietoon perustuva rigidi raja-arvo. Mikäli tuota haluaisi muuttaa, jollain tapaa, voisi tapauksista tehdä omat metodinsa.

Katselmoija ei havainnut koodissa copy-pastea, josta olisi huomautettavaa. Ei siis toistuvuutta, joka vaatisi yliluokkaa tms.

Mitä tulee siihen, että luokka hoitaa vain yhtä asiaa, niin koodissa ei ole selkeästi erotettu graafista käyttöliittymää muusta logiikasta. JavaFX:iä käytetään molemmissa käyttöliittymän ulkopuolisissa luokissa. Katselmoija ei itse ole JavaFX-spesialisti, mutta olisikohan kaikki tuohon liittyvä mahdollista sijoittaa käyttöliittymän sisältäävään pakkaukseen?

Pakkaukset ovat muodollisesti tehty oikeaoppisesti eli default-pakkausta ei ole ja pakkaukset on nimetty asianmukaisesti ja asianmukaisella tyylillä. Tässä viittaan kehitysehdotuksen edelliseen kappaleeseen, mitä tulee eri toimintojen sijoittamisesta eri pakkauksiin.

Testien osalta työn ohjeistuksessakin oli, ettei käyttöliittymälle tarvitse tehdä testejä. Tästä syystä en ota kantaa käyttöliittymälle tehtyihin testeihin. Tässä ehkä ilmenee juurikin edellä mainittu käyttöliittymän vieminen käyttöliittymälogiikan sisältävän pakkauksen ulkopuolelle, jolloin käyttöliittymän testauksen ulkopuolelle jättäminen ei ole mielekästä.

Sinänsä testit näyttivät pintapuolisesti oikeaoppisilta – tosin tässä vaiheessa ei vielä kovin kattavasti, mutta aikaahan on – ja oikein nimetyiltä.

Muutosehdotuksia

Jo aiemmin mainittuina ovat erään metodin lyhentäminen ja käyttöliittymän ja sovelluslogiikan eristäminen toisistaan. Minulle oli jo ensimmäinen level oli haasteellinen, enkä usko, että sitä pääse läpi lainkaan, joten pelattavuuden säätäminen yleisesti on varmasti vielä asia, johon kannattaa kiinnittää huomoita.

Loppusanat

Katselmoitavan idea pelistä on oikein mainio ja on mielenkiintoista nähdä mihin se johtaa! Katselmoitava on myös selkeästi sisäistänyt selkeän ja hyvän koodin kirjoittamisen jalon taidon. Lisäksi katselmoitavalla on selkeästi hiukan enemmän kokemusta JavaFX:istä, koska hän on lähtenyt viemään asioita pidemmälle, mitä esimerkiksi Ohjassa on opittu. Muutoinkin vaikuttaa katselmoitavan olevan hiukan jo kokeneempi ohjelmoija.

Huolimatta alkuvaikeuksista liittyen sovelluksen käynnistämiseen, jäi minulle oikein positiivinen kuva katselmoitavan työstä. Tässähän vielä reilusti aikaa ennen loppupalautusta hioa koodia, joten uskon työstä tuleven oikein mainion. Paljon tsemppiä loppupuristukseen!

@xylix
Copy link
Owner

xylix commented Dec 8, 2019

Kiitos palautteesta :).

Perehdyn tuohon .jar ongelmaan. Luulen että se liittyy siihen että olen kääntänyt "geneerisen" .jar:in MacOS:llä enkä linuxilla.

Käyttöliittymän erottelua muusta ohjelmalogiikasta voisi kyllä parantaa.

Pelattavuuteen todennäköisesti tulee parannusta kunhan lisään spritet; antaessani yhden kaverin pelata tuli huomattua että ensimmäisessä tasossa se että eräs palikka on "avain" ja tietty palikka seinässä toimii ovena ei ole selkeää pelaajalle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants