Ohjelma on jaettu järkevästi aika pitkälti referenssisovelluksen tapaan. Käyttöliittymä ja toimintalogiikka on eriytetty hyvin.
Koodi on selkeää ja helposti seurattavaa.
Copypastea ei ole ja pylint antaakin hyvän arvosanan
Käyttökokemus:
Ohjelma kaatuu heti mikäli ei valitse numeroa. (ValueError: invalid literal for int() with base 10:) Syötettä ei ole pakko muuttaa kokonaisluvuksi
(choice = int(input("Valintani: "))
Tämän voi tehdä vaikka näin:
choice = input("Valintani: ")
ja verrata
if choice == ”1”:
Tällöin välttyy virheiltä väärän syötteen kanssa. (Huom, # Note to self: Tähän lisättävä joku ratkaisu siihen jos input ei ole numero)
Ohjelman toimintaa voisi sujuvoittaa lisäämällä käyttöliittymäluokkiin looppi. Mikäli ei tee oikeaa valintaa ohjelma pysähtyy. Tämän voisi ratkaista mahdollisesti esim. while True silmukalla. Tällöin väärän syötteen sattuessa voidaan antaa virheilmoitus ja palata valikkoon. Se että ohjelma sulkeutuu väärän valinnan seurauksena tuntuu hieman tylyltä.
ohjelma kaatuu kun valitsee 2. katso tapahtumia 1. Hae kaikki tapahtumat mikäli tapahtumia ei ole. Tämä saattaa johtua servise luokan show_graph(self, deposits): metodista. Olisiko niin että plotly.express ei tykkää että se saa argumenttina tyhjiä taulukoita? Syy kannattaa varmaan selvittää.
Ohjelma ei tarkista syötteitä kun lisätään tapahtuma. Esim. päivämäärän tilalle voi syöttää mitä hyvänsä. Tämä saattaa olla käytön kannalta ongelma. Tässä kohtaa olisi myös syytä tarkistaa että summa on numero ja mikäli ei ole pyytää syöttämän uudelleen. Ohjelman kaatuminen väärään syötteeseen ei varmaan ole toivottavaa. Tähän voisi kokeilla vaikka str.isnumeric tai sitten säännöllisillä lausekkeilla testata syöte.
Keskeinen ongelma koodissa on että se ei siedä käyttäjän virheitä. Ohjelman toiminnan kannalta tämä olisi syytä ratkaista. Nyt oletetaan että virhepainalluksia ei tule. Yllä viittasinkin jo tapaan jolla voi aika helposti ratkaista numerosyötteen ongelman mutta siihen toki löytyy muitakin vaihtoehtoja.
plotly.express avaa selaimeen välilehden joka ei sulkeudu automaattisesti. Tämä tuntuu vielä hieman raakileelta varsinkin kun ainoa keino on sulkea koko välilehti. Tämä pitäisi tapahtua mielestäni ohjelmasta käsin.
Koodikatselmus
Projekti ladattu 9.12 16.30
Käyttökokemus:
Ohjelma kaatuu heti mikäli ei valitse numeroa. (ValueError: invalid literal for int() with base 10:) Syötettä ei ole pakko muuttaa kokonaisluvuksi
(choice = int(input("Valintani: "))
Tämän voi tehdä vaikka näin:choice = input("Valintani: ")
ja verrataif choice == ”1”:
Tällöin välttyy virheiltä väärän syötteen kanssa. (Huom, # Note to self: Tähän lisättävä joku ratkaisu siihen jos input ei ole numero)Ohjelman toimintaa voisi sujuvoittaa lisäämällä käyttöliittymäluokkiin looppi. Mikäli ei tee oikeaa valintaa ohjelma pysähtyy. Tämän voisi ratkaista mahdollisesti esim. while True silmukalla. Tällöin väärän syötteen sattuessa voidaan antaa virheilmoitus ja palata valikkoon. Se että ohjelma sulkeutuu väärän valinnan seurauksena tuntuu hieman tylyltä.
ohjelma kaatuu kun valitsee 2. katso tapahtumia 1. Hae kaikki tapahtumat mikäli tapahtumia ei ole. Tämä saattaa johtua servise luokan show_graph(self, deposits): metodista. Olisiko niin että plotly.express ei tykkää että se saa argumenttina tyhjiä taulukoita? Syy kannattaa varmaan selvittää.
Ohjelma ei tarkista syötteitä kun lisätään tapahtuma. Esim. päivämäärän tilalle voi syöttää mitä hyvänsä. Tämä saattaa olla käytön kannalta ongelma. Tässä kohtaa olisi myös syytä tarkistaa että summa on numero ja mikäli ei ole pyytää syöttämän uudelleen. Ohjelman kaatuminen väärään syötteeseen ei varmaan ole toivottavaa. Tähän voisi kokeilla vaikka str.isnumeric tai sitten säännöllisillä lausekkeilla testata syöte.
Keskeinen ongelma koodissa on että se ei siedä käyttäjän virheitä. Ohjelman toiminnan kannalta tämä olisi syytä ratkaista. Nyt oletetaan että virhepainalluksia ei tule. Yllä viittasinkin jo tapaan jolla voi aika helposti ratkaista numerosyötteen ongelman mutta siihen toki löytyy muitakin vaihtoehtoja.
plotly.express avaa selaimeen välilehden joka ei sulkeudu automaattisesti. Tämä tuntuu vielä hieman raakileelta varsinkin kun ainoa keino on sulkea koko välilehti. Tämä pitäisi tapahtua mielestäni ohjelmasta käsin.
Hyvää työtä! Tsemppiä loppukurssille!