GithubHelp home page GithubHelp logo

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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.