Skip to end of metadata
Go to start of metadata

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

EJB metódus
  /**
   * 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
      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels