Talk:Meeskond: HelpOut

From ICO wiki

Retsensioon tiimi VeebiGurmaanid poolt

Esitatud XML fail on korrektselt vormistatud ja valideerub, samuti vastab ka dimensioonide mõõde lähteülesandes nõutule. XML-s on kasutatud ühtlast stiili läbi kõikide elementide.

Meeskonna HelpOut XML-i puhul on pealevaadates tegu XML failiga, mis kirjeldab erinevaid sündmusi ning nendest osavõtvaid persoone. Seega on lehe olulisemad komponendid osalejad ning erinevad üritused. Toimuval üritusel ehk eventil on neli atribuuti: title, created, datetime ning priority. Igal eventil on alamelement organiseerija ehk organizer. Organizeri puhul on antud juhul ainsaks atribuudiks ainult userid. Ka on igal eventil alamelement participants, mille sees omakorda on alamelement participant ehk osaleja. Participanti atribuutideks on userid ning attended. Läbi CDATA on väljastatud ka osaleja nimi. Üldse on CDATA korrektselt kasutusel igal pool, mis on väga positiivne. Antud lehe meeldivaks lisandiks on veel ka see, et meeskond on kasutanud pilte, mis teeb töö huvitavamaks.

Töös on olemas vähemalt 4 dimensiooni. Lisaks on olemas kolm transformatsiooni faili, millest üks neist on HTML ja teine XML fail. Transformatsiooni failid sisaldavad rohkem kui ainult ühte for-each lauset. Kasutatud on ka mitmeid erinevaid tingimuste kontrolle ning vähemalt kolmel dimensioonil on kasutatud vähemalt kahte atribuuti.

XML-i vormistus on kaunis ning arusaadav.

XSD ehk skeemifail on samuti väga mõistlik ja arusaadav. Puuduseks on see, et oleks võinud id atribuutide tüübiks panna midagi muud (int, integer), kui unsignedByte, et mahuline piirang ei oleks vaid 255-ni.

XSLT'd on korrektsed ja arusaadavad. Samuti on kasutatud tsükleid, tingimusi, atribuutide.

Üldiselt hästi tehtud töö ja arusaadavalt teostatud - on näha, et on nähtud vaeva.

Retsensioon Teenusele tiimi Blogify poolt

Rakenduse idee on huvitav ning suhestub kogukondade ja vabatahtlike tegevusega. Samas on positiivne, et ruumi on jäänud ka ärilisele elemendile. Tulevikus on võimalik kliendil osta lisateenuseid nagu kõrgem prioriteet nimekirjas või suurem bänner.

Hea, et teenuses on kasutatud DTO-sid. Halb on see, et DTO-del ei ole annotatsioone, et näiteks stringide pikkust piirata. Lisaks on nimetamisstiil DTO-des ebaühtlane. Hea, et DTO-de puhul on lisatud välju ka teistest tabelitest.

Positiivne on see, et DTO-dega koos on kasutatud ObjectFactory lähenemist ning seal on olemas nii Mudelist DTO-ks tegemise kui ka DTO-st mudeliks tegemise suund. Ühe Factory puhul on positiivse nähuna kasutatud ka Interface, samas oleks võinud seda teha ka ülejäänute puhul. Üheks probleemiks on CategoryFactory nimetus, mille kausta nimi on .cs lõpuga ning selletõttu asub CategoryFactory.cs fail vales nimeruumis. Lisaks kasutatakse selles failis staatilisi meetodeid. Tundub, et seda on tehtud sellepärast, et oleks kergem teisest factory-st meetodeid välja kutsuda. Parem viis oleks olnud kasutada objektorienteeritud lähenemist. Selleks võib anda kohta, kus on vaja klassimeetodeid kasutada, factory interface (CategoryFactoryl see puudub) kaasa.

Kontrollerite poole pealt on positiivne, et meeskond on viinud sisse muudatused HTTP staatuskoodide tagastamise poolelt. Nüüd tagastatakse, mitte ainult OK, vaid veaolukordades ka vastavaid staatuskoode, mis võimaldab klientrakenduse arendajal või edasijõudnud kasutajal paremini mõista, mis läks valesti.

Web API struktuuri poolest häirib see, et kuigi on loodud api kaust, siis api controllerid asuvad sellest väljaspool, mitte selle sees. Selline struktuur tekitab segadust. Muus osas on veebiteenuse edukalt jaotatud erinevateks kihtideks, kasutatud on lisaks eelpoolmainitud DTO-dele ja tehastele ka Serviceid, Repositooriume ja Uow-sid. Repositooriumide puhul on positiivne, et põhilised meetodid on päriluse korras kõikidele erineva mudeliga seotud klassidele ilusti edasi antud. Kohati on Services tehtud päringuid, mida oleks võinud pigem lahendada repositooriumi tasandil ning Servicest selle meetodi välja kutsuda. Üldiselt on sealne kood siiski üsna heal tasemel. Mingeid väga põnevaid päringuid ette näidata ei ole ja repositooriumid on üldiselt tühjad, kuid antud aine kontekstis on andmebaasipäringud ja nende teostamine kindlasti piisava keerukusega.

Kasutades hetke stuktuuri, kus kõik vaate meetodid on ühes failis, võib hiljem tekkida probleeme hallatavusega. Võimalik lahendus oleks eraldada teatud osad üksteisest. Näiteks lahutada ürituste kommentaarid üritustest, tehes sellele enda repositooriumi, service ja factory.

Domeenimudelist rääkides, on positiivne, et kasutatud on annotatsioone. Kohati jääb mulje, et Required välju oleks võinud rohkem kasutada, mitmes klassis puuduvad need täielikult. Hea, et on kasutatud tabelite omavaheliste seoste puhul listides virtual märksõna, mis võimaldab lazy loadingu kasutamist.

Kokkuvõttes on tegemist hea WebApi teenusega, mille struktuur on korralik ning ka kood kannatab kriitikat. Kasutatud on erinevaid kihte, mis muudavad koodi paremini hallatavataks. Probleemid on pigem pisiasjades, kuid suurima veana võib esile tuua, et üritustel puudub edit ja delete meetod. Antud töö kvaliteeti vaadates võib siiski eeldada, et nende meetodite kirjutamine ei oleks sellele meeskonnale probleem.

Retsensioon Kliendile tiimi Blogify poolt


Antud klientrakendus on koostatud meeskonna HelpOut poolt, ning teenusena kasutavad nad ära nende enda poolt loodud WebAPI teenust. On hea näha, et meeskond on võtnud väljakutse proovida klientrakenduse loomisel kätt uuemate tehnoloogiatega, nagu Angular 2. Selle eeliseks AngularJS ees on kohati parem kiirus ning TypeScripti lisandumine, mis võimaldab kasutada arendamisel teatavat koodiennustust IDE poolt. Lisaks selguvad mõned vead juba varem kui rakenduse käivitamisel või kasutamisel.

Jätab soovida, et ei ole juhendit, kuidas klienti kasutada, sest sisselogimine ei ole algselt võimalik. Kuna teenus ja klient asuvad eraldi pordil, on turvakaalutlustel päringud kliendist esialgu keelatud. Cors oleks võinud lubatud olla koodis vähemalt pordile, kus klientrakendus töötab. Siiski oli meeskond abivalmis ja selgitas, et nemad kasutasid rakenduse testimise ajal Corsi brauseri vidinat ning selle abil said ka retsenseerijad lõpuks klienti täies mahus katsetada.

Klientrakenduse koodi struktuur on korralik. Kontrollerid on jaotatud vastavalt eesmärgile. Päringute tegemiseks on kasutatud serviceid. Väikse detailina tekitab siiski küsimusi, miks CSS failid asuvad kahes erinevas kaustas.

On positiivne, et kliendist torkab juba silma potentsiaal, kuidas rakendust äriliselt ära kasutada. On juba olemas mõned vaimukad reklaamid, mis lehte kerides kenasti kaasa liiguvad. Lisaks on registreerides võimalik valida kuulutuse tase, mille hiljem saab muuta tasuliseks funktsionaalsuseks.

Väljade täitmise puhul on hea, et kuupäevade ja kellaaegade sisestamise korral on ette antud vastav formaat, mida on mugav täita. Hea, et ürituse loomise puhul on ka kontroll, et aeg ei saa olla minevikus. Lisaks kontrollitakse täiendavalt, et ürituse lõpuaeg oleks hilisem kui algusaeg. Siiski, mõnes olukorras kui mõni väli on tühi või sellega on probleem, siis võiks viidata konkreetse välja juurde. Väga probleemne on registreerimine. Probleemide korral mõne välja pikkusega või mõnes muus olukorras, mis jääbki müsteeriumiks, ei teavitada kasutajat üldse probleemi olemasolust, rääkimata konkreetsele lahtrile viitamisest. Näiteks tundub, et registreerimise puhul ei öelda liiga lühikese parooli puhul üldse mingit veateadet ja see võib tekitada kasutajas suurt segadust.

Nuriseda võiks ürituse loomisel alguse ja lõpu aja lisamisega. Antud rakenduses kasutatakse selleks HTML5 atribuuti datetime-local, millel on tugi ainult teatud brauserites (Firefox näiteks ei loo sisestamiseks kalendrit). Sellise olukorra lahenduseks oleks võinud kasutada mõnda Javascripti lahendust.

On näha, et rakendus on jäänud poolikuks - mitmed funktsionaalsused ei tööta, nagu näiteks profiili andmete muutmine. Lisaks, vaadates brauseri konsooli, siis näeb sealt, et Javascriptis on mõned süntaksi vead ning mõnda faili ei leita. On probleemne, et üritust ei saa muuta, ega kustutada. Tegemist on elementaarse asjaga, mis võiks siiski olemas olla.

Üldiselt on kliendi kasutajamugavus ning UI kvaliteet tudengiprojekti kohta siiski päris heal tasemel. Lehel on mitmes tulbas eraldi elemente, millest mitmed on interaktiivsed. Lehte on üldiselt mugav ja intuitiivne kasutada.

Rakendusele annab palju juurde ürituse kategooriate olemasolu. Neid saab üritusele lisada ka mitu ja nende järgi on mugav üritusi sorteerida. Ka ürituste otsing pealkirja järgi töötab probleemideta. Hea, et on võimalik kuvada teatud arv üritusi korraga.

Põhifunktsionaalsus ehk ürituste loomine, kuvamine, ning teistel kasutajatel nimekirja vaatamine ning nendega liitumine toimib ning on üsna mugav. Põhimõtteliselt saaks antud lahendust juba reaalselt kasutada.

Kokkuvõttes on tegemist hea klientrakendusega, mida on üsna meeldiv kasutada, kuid veidi rikub kasutajakogemust registreerimisvorm, millel puudub veahaldus. Klientrakendus on kirjutatud Angularis, mille õppimine on kindlasti omajagu vaeva nõudnud. Kood tundub korralik ja hästi struktureeritud. Vajalikud funktsionaalsused on üldiselt realiseeritud ning veebileht täidab oma eesmärki ning seda on mugav kasutada