All pastes #416343 Raw Edit

ef

public text v1 · immutable
#416343 ·published 2007-03-30 06:18 UTC
rendered paste body
Hyvää:
 Ohjelmasi suoriutuu BOSSin testeistä oikein hyvin.

 Olet osannut tehdä syötteenlukemista varten oikein järkevän valinnan eri
 mahdollisuuksista (getline, >> ja get). Kun syötteet on luettu järkevästi,
 niiden käsitteleminenkin helpottuu. Vielä helpommalla olisi päässyt, jos
 olisit laittanut itse lukuoperaation (tässä tapauksessa >>) silmukan
 ehtoon.

 Olet nimennyt muuttujat ihan kuvaavasti ja hyvin.

 Kommenttisi olivat selkeitä ja sisällöltään hyviä, niitä saisi vain olla
 vähän enemmän. Hyvänä nyrkkisääntönä voi pitää sitä, että kommentoi kaikki
 pidemmät koodilohkot (siis esim. funktiot, if:t ja silmukat) ja muuttujien
 esittelyt.


 Kehitettävää:
 Assarin välipalautuksessa antamia muutosehdotuksia olisi pitänyt
 noudattaa.
 Et ollut käyttänyt structeja tai funktioita oikeastaan ollenkaan.

 Olet käyttänyt taulukoita kertoimien ja eksponenttien tallentamiseen.
 Parempi ratkaisu olisi dynaaminen tietorakenne, kuten vector. Näin
 etukäteen
 ei tarvitse varata tarpeettoman isoa muistikasaa ohjelman käyttöön.
 Harvoin
 kuitenkaan kertoimia tai eksponentteja on lähelläkään tuhatta, joten
 muistia
 varataan paljon turhaan.

 Ohjelmakoodisi on paikoin todella tiivistä. Rivinvaihdot oikeissa
 paikoissa
 parantaisivat luettavuutta kummasti.

 Laita aina selveyden vuoksi ja virheitä vaälttääksesi aaltosulut kaikkiin
 koodilohkoihin, vaikka ne olisivatkin vain yhden rivin mittaisia.

 Alkukommentin sisältö voisi olla vähän tarkempi. Ainakin siitä pitäisi
 selvitä, kuka tiedoston on tehnyt, mihin tarkoitukseen ja milloin.

 Silmukkarakenteet ovat selkeämpiä, kun ne perustuvat järkevien ehtojen
 käyttöön, eikä silmukasta poistuta breakin avulla kuin erikoistilanteissa.
 Tuon derivointikyselyn saisi tehtyä ilman ikuista silmukkaa ja breakia
 järkevämmin ja selkeämmin.

 Vakioita kannattaa käyttää enemmän. Esimerkiksi oletustiedoton nimi on
 hyvä
 vakio: const string OLETUS_TIEDOSTO = "yhtalot.txt"; Vakioiden käyttö
 parantaa koodin luettavuutta ja muokattavuutta.

 Ohjelmasi main-funktio on ylipitkä. Hyvä pituus funktiolle on alle 80
 riviä.
 Jatkossa voisit kiinnittää huomiota ohjelman jakamiseen enemmän.

 Loogisesti yhteenkuuluvat asiat kannattaa yhdistää samaan kohtaan ohjelmaa
 (samaan funktioon), niin ohjelman hahmottaminen on helpompaa.

 Yhteenkuuluvat tiedot on yleensä tapana yhdistää tietueeksi. Työssäsi
 Termin
 tiedot (eli kerroin ja potenssi) olisi ollut järkevää yhdistää toisiinsa
 tietueen avulla. Samoin Yhtalon tiedot (eli piirtomerkkijono ja yhtalon
 kaikki termit).


 Muuta:
 Ohjelman tulostukset kannattaa määrittää vakioiksi. Näin niitä on
 jälkikäteen helpompi korjata ja muokata. Siis esim: const string
 KYSY_TIEDOSTO = "Anna asetustiedoston nimi (oletuksena
 yhtalot.txt): ";
 Erityisesti tämä tapa on kätevä, jos sama teksti tulostetaan useammassa
 eri
 paikkaa koodia.

 Ylimääräisiä kirjastoja ei kannata includoida turhaan mukaan. Sinulla on
 includoitu "iomanip", jota et käytä mihinkään.

 Indeksoitaessa vektoria ja stringiä kannattaa käyttää mielummin
 .at()-funkiota, kuin []-sulkeita. Eli esim. piirtoalusta.at(y).at(x)
 meilummin kuin piirtoalusta[y][x]. Tämä siksi, että yleensä käytettäessä
 []-indeksointia, ohi-indeksointia ei tarkisteta, tosiin kuin käytettäessä
 .at():ä.


 Harjoitustyötäsi ei voida tällaisena hyväksyä, syynä
 tietueiden/funktioiden
 puuttuminen. Tämä oli yksi harjoitustyön
 tärkeimmistä asioista, jota painotettiin välipalautuksessakin. Mutta ei
 hätää: Sinulla on mahdollisuus vielä korjata työsi ja palauttaa se
 uudestaan.
 Korjaa työstä vähintään seuraavat kohdat:
 - Tee tiettueet termistä ja yhtälöstä
 - Jaa ohjelmasi funktioihin ainakin niin, että tiedoston lukeminen,
 derivointi, yhtälöiden lisääminen piirtoalustalle ja koordinaatiston
 tulostaminen ovat omina funktioinaan (näitä vielä voi ja kannattaakin
 jakaa
 osiin, käyttämäsi pyorista-funktio on esim. hyvä olla).
 (Luonnollisesti voit korjata myös muita palautteessa mainittuja
 kehityskohtia).