Projekti kloonattu 11.6.2021 klo 15.23 EEST (GMT+3)
(Latest commit 4b8881d)
Yleinen palaute
Koodi on yleisesti helppoa lukea, mutta jonkin verran ns. "copy-pastea" olisi
selvästi mahdollista vähentää. Joitakin rivejä voisi myös mahdollisesti hieman
lyhentää esimerkiksi pilkkomalla ne useammalle riville ja siirtämällä joitakin
koodin osia omiksi funktioikseen. Erityisen vahvasti naapurien käsittelyssä
olevat listat if-lausekkeista vaikuttavat turhahkolta "copy-pastelta".
Pylint on selvästi löytynyt jo, joten kannattaa ihmeessä korjata mahdollisimman
suuri osa sen ilmoittamista tyylivirheistä. :)
Itse peli toimii hyvin, joskin valikoiden osalta käyttöliittymä voisi kaivata
pientä hiontaa. Käyttöliittymä kuitenkin selvästi toimii, joten tämä vain hieman
selkeyttäisi valikoita.
Bottia en pahemmin päässyt kokeilemaan, sillä pienellä kommentoidun koodin
ottamisella käyttöön sain sen tekemään vain ensimmäisen painalluksen.
Ohjelman testaus vaikuttaa tässä vaiheessa kurssia vielä melko puutteelliselta,
sillä testejä on kaksi ja niistä toinen (test_hints_correct
) ei ainakaan
itselläni mennyt läpi.
Sain kuitenkin viikkoraporteista sen käsityksen, että et ole aiemmin tehnyt
mitään vastaavaa Pythonilla, joten testauksen vähäisyys mm. kielen
tuntemattomuuden vuoksi on aivan ymmärrettävää.
Dokumentaation osalta ainakin jonkinlaisesta pienestä käyttöohjeesta olisi
voinut olla hieman apua, sillä päädyin ensin suorittamaan tiedoston
minesweeper.py
enkä ui.py
. Molempien lopusta kun löytyy
if __name__ == "__main__": ...
. Tämä pieni ongelma toki ratkesi tutkimalla
koodia hieman lisää.
If-lausekkeiden vähentäminen
Ympäröivien ruutujen läpikäymisessä voisi olla selkeämpää käyttää kahta
sisäkkäistä for-silmukkaa kuin pitkähköä listaa if-lausekkeita.
Esimerkiksi:
for i in range(-1, 2): # [-1, 0, 1]
for j in range(-1, 2): # [-1, 0, 1]
if i == j == 0:
continue
...
Halutessaan voi käyttää myös vain yhtä silmukkaa:
naapurit = [(-1, -1), ..., (1, 1)]
for i, j in naapurit:
...
Automatisoitu testaaminen
Pip-työkalulla saa asennettua paketit pytest-cov
ja codecov
, joiden avulla
saa lisättyä GitHub-repositorioon melko helposti testikattavuuden näyttävän
badgen. Kannattaa myös ottaa käyttöön GitHub Actions ja ajaa siellä testit
automaattisesti. Tästäkin saa lisättyä badgen repositorioon.
Pytest-cov on helposti käytettävissä myös ajaessa testejä omalla koneella, joten
sen kanssa ainakin rivikattavuuden seuraaminen on helppoa.
Lisäksi ainakin oman kokemukseni mukaan parhaita testejä saa kirjoitettua
löytämällä bugeja manuaalisesti ja kirjoittamalla sitten testin tätä bugia
varten. Näin vaikka vain kyseisen testin voi ajaa jokaisen muutoksen jälkeen
kunnes bugi on korjattu. Lisäksi on myös helppoa myöhemmin huomata, jos sama
bugi vielä joskus ilmaantuu takaisin koodiin.
Toivottavasti saat vielä kurssin lopun aikana valmiiksi ohjelman, joka onnistuu
ainakin useimmiten tehokkaasti pelaamaan läpi miinaharavan. Ja toivottavasti
tästä vertaisarvioinnista on edes jonkinlaista pientä apua. Hyvää loppukesää!