Dokumentaatio
jmtetra's Introduction
jmtetra's People
jmtetra's Issues
Koodikatselmointi..
..versiolle 201702151722
Tähänhän jää koukkuun! Varoitan jo etukäteen, että käytän käsitteitä tetromino ja pala sujuvasti synonyymeinä, vaikka oletkin käsitteellistänyt palan tetrominon osaksi (ja tämä on ihan oikein).
Ohjelmoinnin perusteet, Ohjelmoinnin jatko- sekä Ohjelmistotekniikan menetelmät -kursseilla opitut hyvät käytänteet sekä Clean code -periaatteet
Yleensäkin koodi on hyvin jäsenneltyä (pakkaukset) sekä luokat, muuttujat ja metodit hyvin nimetty lukemista helpottamaan. Lisäksi this
- ja super
-avainsanojen käyttö auttavat tässä. Mielestäni perintää ja toteuttamista on käytetty tarkoituksenmukaisesti. Erityisen mielekästä on lukea javadocitettuja käyttöliittymäluokkia.
Tetrominojen createRotations
-metodeissa if
-ketjun voisi korvata if..elseif
-ketjulla. Jokaisella Tetronome
-ilmentymällä kun on vain yksi rotation
-arvo kullakin hetkellä. Vähän vastaavasti voisi menetellä InputListener
-luokan keyPressed
-metodissa.
Koodissa ei ole havaittavissa merkittäviä koodihajuja. Mainittakoon kuitenkin Tetronome
-luokan perillisissä toistuvat updateXCords
-metodit, jotka vaikuttavat kömpelöiltä. En kyllä keksi tähän parannusehdotusta...
Raportit paljastavat testien kattavuuden. Testit on nimetty kuvaavasti ja testaavat pääasiassa yhtä asiaa/kokonaisuutta kerrallaa. testBoard
-taulukot ja assertArrayEquals
havainnollistavat testattavissa olevaa ominaisuutta.
Pikkujuttna: Luokkien JavaDocien @author
-tunnisteessa on välillä Mikko, välillä mikko ja joskus laimikko. Yhdellä luokalla ei ole @author
-tunnistetta. Sama henkilö kun lienee kyseessä, olisi johdonmukaista käyttää samaa nimimerkkiä kaikkialla.
Ohjelman dokumentointi, ulkonäkö ja toimivuus (eli ylimääräistä)
Pelin päättyessä peli loppuu kuin seinään. Tähän tullee jokin JoptionPane.showMessageDialog
lyhyellä ”Game over”-viestillä ja ”New game”-painikkeella.
Koin painikevalinnat hieman epäintuitiivisiksi, mikä johtunee pitkästä tetris-tauosta; viimeisintä pelaamaani toteutusta pelattiin pelkästään nuolinäppäimillä – ja seuraavaksi arvottu pala näytettiin etukäteen. Kuitenkin loppujen lopuksi putoamisen kiihdyttäminen alas-painikkeella ja pudottaminen välilyönnillä on hyvä idea. Pudottaminen ei lukitse palan paikkaa sivusuunnassa, vaan palaa pystyy vielä siirtämään sivusuunnassa välilyönnin painamisen jälkeen! Tämä lienee korjattu viimeisimmästä koodikatselmoinnista?
Hieman häiritsee, että esimerkiksi I-tetrominoa ei pysty kääntämään ennen kuin se on pudonnut tarpeeksi, tai siis ennen kuin palalla on tarpeeksi tilaa kääntyä. Tämä tosin taitaa olla ”by design”. I-tetrominoon liittyen, jos palan pudotessa pala käännetään pitkittäin, siirretään pelialueen laitaan ja painetaan kiertopainike pohjaan, pala alkaa välkkyä, mikä luo illuusion palan liikkumisesta ylöspäin. Tämä tosin lienee vain kosmeettinen seikka eikä sillä ole itse pelin kannalta mitään merkitystä.
Odotan innolla pisteytysjärjestelmän implementointia. Pisteytysmenetelmiä kun on niin monia mistä valita…
Koodikatselmointi
Jmtetra-master ladattu 5.2.2017 17:17
Pelin perusmekaniikka toimii kuten pitääkin siltä osin mitä koodattu. Lisää ominaisuuksia tullee ajan myötä, mutta tähän astisessa työssä ei ole moitteita.
- Koodi on selkeää ja helposti ymmärrettävissä ilman kommenttejakin.
- Metodit pidetty lyhyinä ja nimeäminen luontevaa
- Raportointi täyttää kaikki kriteerit (niin oma kuin generoidut raportit)
- Testiluokat kattavia
- Pelaillessa harmitti vain palikan osuessa lattiaan palikkaa ei voinut enää liikuttaa yhtäkään pykälää, vaikka tilaa olisi ollut
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.