Git Product home page Git Product logo

tiralabra-synth's People

Contributors

reksa97 avatar

Watchers

 avatar

Forkers

codacy-badger

tiralabra-synth's Issues

Vertaisarviointi

Projekti ladattu koneelle 30.11. klo 15.05

Projektisi vaikuttaa oikein hienolta. Näin asiaan vihkiytymättömänä minun on vähän vaikea pysyä kärryillä ohjelman sisäisestä toiminnasta. Mutta sain ohjelman kyllä toimimaan ja pystyin sillä soittamaan muutamia epävireisiä sävelmiä. Ilmeisesti kuitenkaan kaikkia ylä- ja keskirivin näppäimiä ei ole kartoitettu sävelmiin esim. q ei tuota mitään ääntä. Tämä olisi ehkä hyvä tuoda ilmi itse ohjelmassa, esimerkiksi jos ohjelmassa olisi jokin "Help"-valikko.

Koodin laatu

Koodi vaikuttaa oikein toimivalta ja hyvin refaktoroidulta. Toiminnallisuudet ja käyttöliittymät on eroteltu selvästi eri paketeihin ja luokat on muodostettu järkevästi. Oikeastaan ainoa asia mikä kävi silmiin, on luokan ADSR suuri attribuuttimäärä. Voisiko näitä vähentää esimerkiksi antamalla luokalle double ja boolean tyyppiset taulukot, joiden kukin indeksi vastaa jotakin noista attribuuteista?

Dokumentointi

Dokumentointi on pääosin hoidettu hyvin. Koodissa on vielä jonkin verran jäljellä kommentoitua koodia, eli nämä tiedot kannattaisi siirtää javadociin. Muuten dokumentointi vaikuttaa kattavalta. Tosiaan voisit ehkä dokumentoida ohjelman käyttöä tarkemmin mm. rivikomentojen suhteen.

Testaus

Ohjelmassa on kattava testaus ainakin rivikattavuuden suhteen (>99%). Testit itsessään vaikuttavat testaavan järkeviä asioita.

Kaiken kaikkiaan hyvin tehty ohjelmointityö, jonka taustalla on selvästi harrastuneisuutta tai muuta mielenkiintoa aihetta kohtaan.

Vertaisarviointi

Ladattu 6.12.2018 n. 23:45

Hyvää työtä. Työ vaikuttaa oikein hienolta!

Joitain huomioita:

  • Saattoi sattua vain huono lataushetki, (vai onko tässä mahdollisesti ongelmana että olen w10:ssä?) mutta:

    • Buildi ei onnistu
    • Myös netbeanssin kautta mainin ajaminen ei toimi.
  • Javadoc puuttuu jostain kohdista, vaikka sitten kommentoituja selityksiä on. Nämähän voisi samantien hoitaa javadoccina kaikki?

  • Johonkin dokumenttiin voisi merkitä selkeämmin mitkä ovat - huomioon ottaen kurssin tarkoituksen - oleelliset algoritmit ja tietorakenteet ja mitä aika ja tilavaatimuksia näillä on. Sitten tietysti myös kun testausta tehdään, niin sen, että päästiinkö vaatimuksiin.

  • Muuten koodi on mielestäni pääosin ihan kunnossa. Tosin projektissa on juuri synteettisaattoriin liittyviä erityisia muuttujia ja metodeita niin paljon, että vaikea seurata.

Joitain huomioita koodista:

  • Rakenne

    • Nyt synth luokassa näyttää olevan vähän kaikenlaista. Eri toiminnallisuuksia voisi jakaa omiin paketteihin.
    • Määrittelydokumentin mukaan GUI:n hoitaa synth-luokka. Tämä kyllä jo näyttää olevan vaihdettu omaan GUI pakettiin ladatussa versiossa. Hyvä niin.
    • Selkeämpi pakkaus voisi olla I/O -paketti joka hoitaisi näppäimistöltä tulevaa, ja ulospäinlähtevää
    • Jos utils pakkaus jää yhteen luokkaan, niin sen voisi mahdollisesti siirtää muun logiikan kylkeen. Tai sitten jättää ydinalgoritmit synth -pakettiin ja siirtää jotain muita utils luokkaan.
  • Arkkitehtuuri: Jollain kaaviolla (dokumentointiin) voisi selventää mikä luokka riippuu mistäkin. Miten tieto etenee näppäimestä ääneksi? Luokkia voisi ehkä myös jakaa lisää, katso nimeäminen. En tiedä onko tässä koodin tasolla mitään pielessä sen enempää. Muista kuitenkin Single resposibilty principle ja riippuvuuksien minimointi.

  • Nimeäminen: Luokkien nimet eivät ole kovin intuitiivisia. Implementation -dokumentti auttoi paljon, muuten olisin varmaan ollut aika hukassa. Esimerkiksi synth näyttää nyt huolehtivan bufferoinnista, joistain ulkoasuseikoista(?) ja jostain muusta (audioinfo). "Keyboard" luokasta ajattelisin ehkä ennemmin jotain input-lukijaa. Luokassa kuitenkin myös jo tehdään taajuudet. Toisaalta utils paketissa on lisää keyboard - toiminnallisuutta. ADSR -luokka ei oikein nimenä sano mitään, toisaalta voi olla että ääniin jotenkin perehtyneelle luokka on ihan intuitiivinen.

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.