Skip to content

Koodikatselmointi #1

@Arkiherttua

Description

@Arkiherttua

I hope it's okay that I did this in Finnish because I'm not so good at writing English.

Repositorio ladattu: 11.4.2014 klo 18

Yleistä

  • javadoccien hyödyllisyys paljastui minulle koodiasi lukiessa: ne todella auttoivat ymmärtämään, mitä mikäkin metodi tekee.
  • Main-luokan kannattaisi luultavasti luoda SlidePuzzleModel: nyt pääluokka luo vain käyttöliittymän, mikä on hieman käyttöliittymän ja pelilogiikan eriyttämisen periaatteiden vastaista.
  • clean code-periaatteita hyvin noudatettu. Käyttöliittymän olit jakanut luokkiin tavalla, jota en ole nähnyt aiemmin, mutta se näytti toimivalta, joten tuskin oma tapasi on yhtään huonompi kuin se, mitä itse olen tottunut MOOC-kurssin ynnä muiden perusteella käyttämään.
  • peliä voisi laajentaa antamalla käyttäjän valita, kuinka iso pelikenttä on. Tosin logiikka ei tästä juuri luultavasti laajentuisi, lähinnä käyttöliittymään tulisi uusia asioita.

Pelilogiikasta

  • perustoiminnallisuus hyvin kasassa. Virheilmoitusääni, kun pelaaja yrittää siirtää jumissa olevaa ruutua on hyvä ja toimiva lisä. Olen siis ottanut pelaajan hyvin huomioon, etkä keskittynyt liikaa pelkkään pelimekaniikan rakentamiseen.
  • isGameOver-metodi ei ilmeisesti toimi: peli ei koskaan osaa ilmoittaa, että palapeli on ratkaistu. Metodi ei tunnu toimivan tarkoitetulla tavalla, vaan se taitaa tarkistaa ainoastaan, onko ensimmäinen tiili paikallaan.
  • randomizeTiles satunnaistaa tiilien paikat muuten hyvin, mutta sen on mahdollista tuottaa pelitilanne, josta ei pääse mitenkään loppuratkaisuun. En osaa antaa korjausehdotuksia, muistan vain oppineeni jollain matematiikan kurssilla teoreettisesti, että noin voi käydä. Jos haluat perehtyä asiaan ja hienosäätää tuon ominaisuuden kuntoon, Google varmaankin osaa auttaa.

Testeistä

  • testikattavuus näyttää numeroiden perusteella hyvältä
  • toisaalta osa testeistä esim. testaa useampaa kuin yhtä asiaa (useampi kuin yksi assert-komento)
  • testeistä saisi hieman helppolukuisempia, jos ne nimeäisi vieläkin kuvaavammin (ainakin Ohjelmistotekniikan menetelmät-kurssilla käskettiin aina käyttää mahdollisimman pitkiä nimiä). Lisäksi joitakin pitkiä testejä voisi selkeyttää refaktoroimalla niitä siten, että osa toiminnallisuudesta olisi metodeissa. Testiluokkiinkin kun voi tehdä metodeita ihan niin kuin tavallisiin luokkiin

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