Damagereport retsensioon

From EIK wiki

Vaate kihis on koodis kasutatud sõnesid vaadete tiitlites, väljade kirjelduses, kasutajale suunatud teadets ilmutatud kujul- soovitaksin kasutada stringi ressursse, mida saab laadida võtme järgi ressursifailist. Eeliseks on lihtne nimetuste haldamine, üle süsteemi nimetatakse asju ühte moodi, kerge internatsionaliseerida, vahetada ressursi fail, saab ingilise keelse versiooni jne. Vaatekihis, tehakse palju objektide initsialiseerimist nö. manuaalselt, soovitaksin kasutada konstruktorit, mis saab sisendiks objekti ning väljade väärtustamine tehtaks konstruktoris- muudab koodi alati ühesuguseks ning ellimineerib kasutu koodi kordamise. Teenuste kihi juures jäi silma(PaymentService) objektide listi küsimisel luuakse kenasti konstruktorit kasutades objekt, kuid siis itereeritakse sama list uuesti üle ning teostatakse väljaväärtuste kalkulatsioon, seda saab samuti teostada konstruktoris objekti loomise ajal- saaks vältida liigset tsüklit. Teine kitsaskoht millele tahaks tähelepanu juhtida on Interface'ide puudumine teenuste kihis-> üldjoontes vaadates kasutajaliidesega süsteeme, teostame me alati ühesuguseid toiminguid ning hetke implementatsiooni mudeli juures on väga raske vahetada teenuste funktsionaalsust, juhuks näiteks kui soovitakse muuta rakenduse andmesalvestus näiteks failidesse serialiseerimise põhiseks- ei saa lihtsalt teenuste kihti vahetada, et instantsieerida näiteks failidesse serialiseerimist toetavate teenuste implementatsiooniga. See on samuti tehniline nüanss- saab vaielda, et kui soovitakse teistsugust teenusekihi käitumist, siis tehaksegi uus projekt ning kopeeritakse teenuste kiht ja kirjutatakse ümber, kuid üldiselt on kood mugavam hallata ning jälgida kui on olemas Interface'ide põhine teenuste kirjeldus. Teenuste juures sooviksin veel viidata tüüpimise vajadusele-> implementeerivad klassid peaksid töötama vaid etteantud tüüpi objektidega- muudab koodi väga ühesuguseks ning jälgitavaks, võimaldab üldistamist-> näiteks save meetod on kõigile objektidele samasugune ainult andmetabel ning relatsioonid on teised, seega saab savlestamise, kustutamise generaliseerida üldisesse teenusklassi, mida teised teenused saaksid laiendada- saavutades vajaliku ühetaolise funktsionaalsuse automaatselt.