lofhjann / chess Goto Github PK
View Code? Open in Web Editor NEWThis project forked from tiralabra/chess
License: MIT License
This project forked from tiralabra/chess
License: MIT License
Repository ladattu 21:40 27.02.20
Parannusehdotuksia koodiin:
GameState.java käsittää ohjelman tilaa määrittäviä muuttujia, jotka
osuvien nimivalintojen ansiosta kertovat jo koodin toiminnasta yksinään.
Tähän ei enempää kommentointia tarvita.
Useammassa paikassasa tuli TODO merkintöjä vastaan. Parempi olisi
pyrkiä täyttämään saman tien se premissi, jota lähtee tavoittelemaan
yhdessä työskentelysessiossa. Jos tämä ei onnistu, premissiä voi
madaltaa, tai siitä voi luopua kokonaan. Tällöin turhaa keskeneräistä
koodia ei pääse muodostumaan.
Useampi nappula pystyy liikkumaan kaikkiin suuntiin ja täten samoja
suuntia on lueteltu erikseen useammassa paikassa. Tämä on DRY-periaatetta
vastaan. Parempi on luetella kaikki tavanomaiset suunnat yhdessä
paikassa kerran ja sitten viitata kyseiseen luetteloon sitä tarvittaessa.
Pelkät suunnat eivät tarjoa tarpeeksi näppärää käsitteistöä
shakkisiirtojen kuvaamiseen. Kätevämpää on luoda lisää käsitteistöä
ja hyödyntää niissä alakäsitteenä Direction-luetteloa. Tällöin
Direction-luettelon voi määrittää käsittämään ainoastaan tavanomaiset
suunnat shakkilaudalla poislukien hevosen spesifimpi
siirtymälogiikka.
Aloitin projektiin tutustumisen ajamalla testit ja buildaamalla projektin. Testit menivät hyvin läpi ja buildikin onnistui, joskin parin checkstyle-virheen saattelemana. Suorittamisen kannalta projekti siis vaikuttaa olevan oikein hyvässä kunnossa.
Itse koodista huomasin ensimmäisenä hyvän luettavuuden. Asiat oli nimetty järkevästi ja projektirakenteeltaan koodi oli siististi laadittu. Pidin myöskin projektin tavasta mallintaa pelilautaa, sillä yksiulotteinen taulukko näyttää mahdollistavan mukavan elegantteja ja nopeita tapoja laskea pelilaudan tapahtumia.
Mitään varsinaista huomautettavaa en projektista oikein keksinyt. Projektin tekijällä on selkeästi vahva visio lopputuloksesta ja koodia on lähdetty kirjoittamaan järjestelmällisesti sitä kohti. Pieniä pilkunviilauksia koodista tosin löytyi:
this.data = new Object[10];
. Lukuarvon 10 voisi ehkä korvata jollakin vakiomuuttujalla.evaluateNegaMax
nimi on hieman hämmentävä, sillä se vaikuttaisi olevan varsinainen negamax-algoritmi kun taas negaMax
vaikuttaisi olevan metodi, joka kerää sallittujen siirtojen joukosta sen siirron, jonka lapsien arvioitu arvo on kaikkein suurin(tai pienin). Tämä aiheutti hieman hämmennystä ainakin itselleni koodia ensimmäistä kertaa luettaessa.Kaiken kaikkiaan projekti vaikuttaa olevan siis erinomaisella mallilla.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.