Kódminőség (QA)
Igyekezzünk úgy programozni, hogy közben kódbázis minőségét is szem előtt tartjuk. Ez a minőségbiztosítás három részből áll:
- Formai követelmények
- Hibakezelés és naplózás
- Kis méretű, átlátható metódusok, gyors és hatékony kód
EJB QA
A portál kódjának nagy része EJB bean metódusokban és entitásokban található.
Session bean-ek
Formai követelmények
/** * A Domain entitás lekérdezése név alapján * * @param name A domain neve * @return A domain entitás * * @since b0 */ @Override @TransactionAttribute(TransactionAttributeType.SUPPORTS) public Domain getDomainByName(String name) { PerfLogger perfLogger = new PerfLogger(); try { Query query = this.emanager.createNamedQuery("DomainByName"); query.setMaxResults(1); query.setParameter("name", name); List<Domain> list = query.getResultList(); perfLogger.doLog(logger, Level.FINER, "SELECT Domain"); if (list.size() == 1) { return list.get(0); } } catch (Exception except) { perfLogger.doLog(logger, Level.SEVERE, except.toString(), except); } finally { perfLogger.doLog(logger, Level.FINE, "Total"); } return null; }
Hibakezelés és naplózás
Minden EJB metódusban legalább egy try-catch-finally blokk kell legyen, amely lekezeli az előforduló hibákat. Minden hibát naplózunk, mégpedig a try előtt létrehozott PerfLogger példányt használva. A Level.FINE és a Level.FINER szint a részletes performancia naplózásra van fenntartva. A finally ágban mindig megmérjük a teljes futási időt, ennek FINE a szintje, a try blokkon belül pedig elvárható részletességgel mérhetjük az egyes műveletek lefutási idejét, ennek FINER a szintje. A catch blokkban mindig SEVERE szinten naplózunk, üzenetként a kiváltott kivétel toString metódusa szerepel, s itt magát a kivételt is naplózzuk. Hiba esetén szinte kivétel nélkül eldobjuk a kiváltott kivételt, és null eredményt adunk vissza. A hívónak az eredményből kell eldöntenie, hogy hiba történt.
Gyors és hatékony kód
A gyors és hatékony kód sok esetben rövid, tömör és átlátható. Gyakran használt metódusok esetén célszerű olyan kódot írni, ami gyors, akkor is ha ettől romlik a metódus áttekinthetősége és a kód olvashatósága. Ritkábban használt metódusoknál inkább az átlátható és olvasható kód az elvárt, mint a gyors és hatékony. Főbb EJB szempontok:
- NamedQuery használata a gyakran használt lekérdezéseknél
- A tranzakcionalitás használata
- SUPPORTS, ha nem történik írás az adatbázisba
- REQUIRED, ha adatbázisba való írás történik