haapseem / otm-harjoitustyo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Koodikatselmointi

juliagron opened this issue · comments

Koodi ladattu 3.5 klo 13.42

Yleisilme

Pacman-peli, jossa nuolinäppäimiä tai wasd-näppäimiä käyttämällä liikutetaan pacmania. Ikkunan otsikossa on meneillään olevan pelin pisteet ja pelin paras tulos. Pacmanin osuessa haamuun peli alkaa alusta.

Pakkausrakenne

Koodi on jaettu viiteen eri pakkaukseen, joiden sisällä olevat luokat on suurimmalta osin jaettu siten, että logiikka, grafiikka ja tiedontalennus on eriytetty. Graafiset luokat App, Game ja GameScene voisi laittaa saman pakkauksen alle, jos niiden tämän hetkiseen asetteluun ei ole pätevää syytä.

Luokat

Suurimmalta osin sovelluksen luokat ovat hyvin kirjoitettu (mitä niistä nyt ymmärsin). Koodin luettavuutta parantaisi checkstyle virheiden korjaus. Jos käytät NetBeansia, komento Shift+Alt+F on erittäin hyödyllinen, sillä se luo tiedostolle automaattisesti hyvän muotoilun ja jo se poistaa monia virheitä.
Netbeans myös ilmoittaa, jos sen mielestä koodi on rumaa tai if-else:n olisi parempi olla switch jne. Tästä Netbeans imoittaa keltaisella alleviivauksella ja parannusehdotuksen voi katsoa komennolla Alt+Enter.

Mielestäni luokat noudattavat aika hyvin single responsility -periaatetta. Erityisesti pidin siitä, että laudan piirtäminen ja liikkuvien osien käsittely ovat eri luokissa.

Luokat - ja niiden metodit - kannattaa kommentoida, sillä itsellä oli vaikeuksia ymmärtää joidenkin luokkien (kuten Sprite) tarkoitusta.

Testaus

Ohjemassa on yksi tasan yksi testi:

    @Test
    public void createGame() {
    	Stage s = new Stage();
	Game g = new Game(stage);
    }

joka ei testaa mitään.

Suosittelen jättämään ulkoiset kirjastot ulos testikattavuusraportista, sillä tällä hetkellä testattavia rivejä on 1,019,034.

Muuta huomioitavaa

Bugit

Peliä testatessa huomasin muutama bugin:

  1. Välillä sulkiessa ohjelman se jäi vielä pyörimää. Täsmällistä syytä en löytänyt, mutta ongelma ei toistunut ohjelmaa sulkiessa lisättyäni pääluokan start-metodiin seuraavan koodin pätkän:
        stage.setOnCloseRequest(e -> {
            Platform.exit();
            System.exit(0);
        });
  1. Varmasti en osaa sanoa, että tämä tapaus on bugi eikä tekijän tekemä yllätysominaisuus, mutta muutaman kerran peliä pelatessa haamu kulki pacmanin yli ja mitään ei tapahtunut.

  2. Joskus pacmanin osuessa haamuun ohjelma antaa yhden neljästä eri IndexOutOfBoundsException-virheilmoituksesta, joka ei vaikuta pelin pelaamiseen. Nämä eri virheet ovat

    • index:0, size:4
    • index:1, size:4
    • index:2, size:4
    • index:3, size:4

    Ilmoitus ohjaa Game-luokan eri riveille riippuen, mikä edellä mainituista tapauksista on kyse. Esimerkiksi jos index on 0, ohjaa virheilmoitus riveille 130, 348 ja 340.
    Yhdistävää tekijää virheen sattuessa en nähnyt.

Yhteenveto

Hyvä ohjelma, jota oli kiva pelata, vaikka pacmania oli välillä vaikea erottaa haamuista. :)