ot-harjoitustyo's People
ot-harjoitustyo's Issues
Koodikatselmointi
Projektin lataus 28.4.2020 klo 21:20
Loistavaa työtä!
Ensivaikutelma koodista ja ohjelmasta oli erinomainen:
- Testejä on paljon ja ne ovat raportin mukaan kattavia
- Toiminnallisuus on eritelty sopivan kokoisiin luokkiin
- Metodien nimet ovat kuvaavia ja suhteellisen yksinkertaisia
Vaikka varsinaiseen koodikatselmointiin ei kuulunut ulkoasun ja toimivuuden varsinainen arviointi,
on pakko kehua projektia siitä, että oli ilahduttavaa käynnistää ohjelma ja onnistua ilman ylimääräisiä
ohjeita pelaamaan!
Tämänkaltainen ohjelma vaatii helposti paljon erilaisia ehtorivejä, kulmatilanteiden käsittelyä ja
monien asioiden huomiomista pitkillä if-else-riveillä, joten siihen nähden olet mielestäni onnistunut hyvin pitämään asiat kasassa. UI-luokan newGame-metodiin mietin kuitenkin, olisiko sitä vaikeasta tilanteesta huolimatta mahdollista pilkkoa hieman, esimerkiksi jo eriyttämällä nappienluomislooppi
for (int x = 0; x < game.getGridSizeX(); x++) {
for (int y = 0; y < game.getGridSizeY(); y++) {
Button button = new Button("");
button.setFont(font);
.......
omaksi createButtons-metodikseen, olisi tämä huomattavasti helpommin lähestyttävä ulkopuoliselle lukijalle. Myös Comboboxien identtisten sisältöjen toiston
ComboBox comboBoxX = new ComboBox();
comboBoxX.getItems().addAll(
2,
4,
6,
8,
10,
12,
14,
16
);
comboBoxX.setValue(4);
ComboBox comboBoxY = new ComboBox();
comboBoxY.getItems().addAll(
2,
4,
6,
8,
10,
12,
14,
16
);
comboBoxY.setValue(4);
voisi ehkäpä ulkoistaa omaksi metodikseen niin, että mahdollisia muutoksia ei tarvitsisi kirjoittaa aina kahteen kertaan? Kuten jo todettu, koodisi on kuitenkin jo valmiiksi hyvin toimivaa ja selkeälukuista, yllä olevat huomiot ovat vain muotoseikkoja!
Game-luokan handleAction-metodia mietin pitkään. Se tekee nyt paljon asioita, ja on täysin mahdollista, että näiden pilkkominen ei ole loppupeleissä edes järkevää. Pieni selkeytys esimerkiksi palautteen (1,2,3) vaikutuksiin ja ajanoton sisällyttämiseen voisi kuitenkin auttaa ulkopuolista lukijaa?
Voisiko timer-funktiot eristää täysin omiin aloitus- ja lopetusmetodeihin, joita käytetään UI-luokan aloituksesta ja lopetuksesta käsin?
Testeissä huomasin erään mielenkiintoisen ominaisuuden: vaikka ne testaavatkin lähes täydellä kattavuudella koko logics-paketin, nojaa GuessTestin ja GameTestin toimivuus siihen, että esimerkiksi luokat Card ja Deck toimivat oikein. Usein, kuten nytkin, tässä ei ole ongelmaa, vaan kaikki rullaa sopivasti yhteen. Kuitenkin mahdolliset CardTest, DeckTest yms. muiden luokkien "omat" testaukset voisivat olla paikallaan, varsinkin jos näihin luokkiin on tulossa muutoksia. Tällöin testausluokkien vastuut olisivat selkeämmät ja mahdollisesti hajoava luokka helpompi indentifioida!
Dao-paketti on ilmeisesti alustettu jatkokehitystä varten, itselläni tilanne on sama, joten sen testaus ja kommentointi ei tällä hetkellä ole siis kovin mielekästä.
Kaikenkaikkiaan projektisi vaikuttaa todella hyvältä, josta varmasti kertoo myös ylläolevien huomioiden keskittyminen lähinnä pienehköihin muotoseikkoihin! Toivottavasti saat vielä täydennettyä aloittamasi Dao-paketin, ja ylipäänsä projektisi haluaamasi viilattuun muotoon viimeisen viikon aikana, jotta loppupalaute on mahdollisimman hyvä! Saatan kloonata projektisi vielä kurssin päätyttyä koneelleni uudestaan (mikäli pidät sen julkisena), sillä yksinkertainen mutta hyvin toimiva muistipeli vaikuttaa hauskalta!
Hyvää kevättä ja periodin loppua!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.