#Dokumentaatio
tetris's Introduction
tetris's People
tetris's Issues
Koodikatselmointi
Projekti ladattu 9.10. 2016 klo. 15.40
Pääsin koodiisi helposti sisälle ja luokkien yhteydet ovat mielestäni selkeitä, tosin sitä voisi ehkä vielä hieman parantaa jakamalla luokkia pariin pakkaukseen. Esimerkiksi kaikki tetriminot yhteen pakkaukseen.
Luokkien, metodien, parametrien yms. nimet ovat kuvaavasti nimettyjä ja muutenkin nimeämisohjeiden mukaisia. Myös JavaDoc-kommentit selkeyttivät koodia hyvin.
Luokassa Kuvio on hieman copy-pastelta näyttävää koodia. Löysin toistuvaa koodia ainakin metodeissa liikutaOikealle() ja liikutaVasemmalle() sekä metodeissa sijaintiOikealla(), sijaintiVasemmalla() ja sijaintiAlhaalla().
Checkstyle-raportin mukaan Kuvio-luokka olikin hieman pitkänlainen, joten ehkä copy-pasten poisto auttaisi asiaa. Samoin sen testiluokka on melko pitkä. Muuten checkstyle ei näyttänyt virheitä.
Myös eri tetriminoja kuvastavissa luokissa metodin kierra() sisällä oli toistuvaa koodia.
Copy-pastea lukuun ottamatta metodit vaikuttivat kuitenkin lyhyiltä ja toteuttavan single responsibility periaatetta.
Koodikatselmointi
Latasin ohjelmasi 25.9. klo 16.
-kuvio-luokan constructor on aika pitkä. sen saisi helposti jaettua osiin esimerkiksi laittamalla kuvion luonnin(luonnit) erilliseen funktioon
-kuvion tyyppien määrittelyssä olisi hyvä tilaisuus käyttää enumeratoria int:n sijasta.
-peli-luokassa tarkistat joka loopissa, onko kuvion alin palikka korkeammalla, kuin Pelin "alin". tässä tapahtuu off by one virhe, eli liikutat kuviota alaspäin vielä silloin, kun se on jo Pelin alinta korkeammassa y-koordinaatissa
-Onko Kuvio-luokan liiku()-metodin toteutukselle jotain erityistä syytä? Nyt joka loopissa alustetaan uusi int, kutsutaan kahta eri metodia ja vielä muutetaan intiä. Järkevämpi toteutustapa olisi esimerkiksi tehdä Palikka-luokkaan metodi, joka vain laskee y:tä yhdellä, ja kutsua sitä jokaiselle Kuvion Palikka-objektille.
-Peli-luokan konstruktori vaikuttaa aika hankalalta. Se kannattaisi ehkä uudelleentoteuttaa niin, että Peli-objekti vain hallinnoi pelin aloitusta ja lopetusta, sekä pelin kannalta erilaisia tiloja. Main-luokasta voisi kutsua Peli-luokan funktioita, joissa tehdään alustus ja pelin looppaus.
-testit olivat kommentoitu pois, joten päätin olla koskematta niihin sen kummemmin.
-kentän koon voisi laittaa Finaliksi, ellei ole ideana, että sitä voi muuttaa kesken kaiken
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.