Javadoc

Javadoc on dokumentaation luoja. Javadocin on alun perin kehittänyt Sun Microsystems Java-ohjelmointikielle, jonka nykyään omistaa Oracle Corporation. Javadoc luo API-dokumentaation HTML-muotoon Java-lähdekoodin perusteella. HTML-muotoa käytetään, jotta pystytään käyttämään linkkejä dokumentaatiossa.

Javadoc ei vaikuta ohjelman suorituskykyyn, koska kaikki kommentit poistetaan ohjelmakoodia käännettäessä. Kommentointi ja dokumentaatio parantaa ohjelmakoodin ylläpidettävyyttä.

Tekninen arkkitehtuuri

[muokkaa | muokkaa wikitekstiä]

Javadoc-kommentin rakenne

[muokkaa | muokkaa wikitekstiä]

Javadoc-kommentti eroaa tavallisesta monirivisestä koodissa olevasta kommentista niin, että siinä on yksi tähtimerkki enemmän lähtömerkissä ”/**….*/”. Ensimmäinen kappale on dokumentoitavan metodin kuvaus ja muut kappaleet ovat antavat tarkempaa tietoa metodista. Kappaleita voi merkitä niiden sisällön perusteella. Keskeisimpiä ovat:

  • ”@param” metodin parametrit
  • ”@return” mitä metodi palauttaa
  • ”@throws” mitä mahdollisia virheitä metodi heittää
  • ”@see” hyvä tietää

Javadoc-merkintöjä

[muokkaa | muokkaa wikitekstiä]

Alla olevassa taulukossa on osa saatavilla olevista Javadoc-merkinnöistä[1]:

Merkintä & parametri Käyttö
@author Matti Meikäläinen Kertoo tekijän nimen.
@exception luokka kuvaus

@throws luokka kuvaus

Kuvaus mahdollisista poikkeuksista, mitä metodi voi palauttaa.
@deprecated kuvaus Kuvaus ei käytössä olevasta metodista.
@param nimi kuvaus Kuvaus metodin parametrista.
@return kuvaus Kuvaus metodin palauttamasta arvosta.
@see viittaus Linkki toiseen kohtaan dokumentaatiossa. Luo "See Also" -kohdan dokumentaation loppuun.
{@link viittaus} Linkki toiseen kohtaan dokumentaatiossa. Luo linkin määriteltyyn kohtaan dokumentaatiossa.
@version versio Kertoo tiedoston tai julkaisun nykyisen version.
@since versio Kertoo missä versiossa kyseinen ominaisuus luotiin.

Metodin dokumentointi

[muokkaa | muokkaa wikitekstiä]

Alla oleva esimerkin ensimmäisessä kohdassa (1) kuvaillaan lyhyesti metodin toiminta. Toisessa kohdassa (2) voidaan kuvailla tarkemmin metodin toimintaa useammalla lauseella. Kolmannessa kohdassa (3) käytetään merkintöjä kuvailemaan metodin saamia parametreja. Kommentissa on mahdollista käyttää HTML-muotoiluja, kuten rivinvaihtoa <p>.[2]

/**
 * Lyhyt yhden rivin kuvaus.                           (1)
 * <p>
 * Pidempi kuvaus, jota on mahdollista jakaa useampiin kappaleisiin. (2)
 * <p>
 * Kuvaus viedään HTML koodiin, joten HTML muotoilut ovat mahdollisia,
 * kuten yllä oleva rivinvaihto.
 *
 * @param  Rivin alkumerkintä tarkoittaa parametriä ja tähän ne voi kuvata.   (3)
 * @return Rivin alkumerkintä tarkoittaa metodin palautusta ja arvoja voi kuvailla tähän.
 */
public int metodinNimi (...) {
    // Metodin ohjelmakoodi
}

Muuttujien dokumentointi

[muokkaa | muokkaa wikitekstiä]

Muuttujat dokumentoidaan samalla tyylillä kuin metodit, mutta kohta (3) jätetään pois. Tässä muuttuja sisältää vain lyhyen kuvauksen:

/**
 * Muuttujan kuvaus tähän.
 */
 private int luku = 0;

Useamman muuttujan määrittely yhden Javadoc-kommentin alle ei ole suositeltua.[3] Tämä siitä syystä, että Javadoc lukee jokaisen muuttujan erikseen ja sijoittaa ne luodulle HTML-sivulle erilleen toisistaan dokumentoinnin pysyessä samana.

/**
 * Pisteen vaaka- ja pystyetäisyys (x,y).
 */
 public int x, y;       // VÄLTÄ TÄTÄ

Ylläolevan koodin pohjalta lopputulos näyttäisi seuraavalta:

 public int x
Pisteen vaaka- ja pystyetäisyys (x,y).

 public int y
Pisteen vaaka- ja pystyetäisyys (x,y).

On suositeltua määritellä ja dokumentoida muuttujat erikseen selkeyden vuoksi:

/**
 * Pisteen vaakaetäisyys.
 */
 public int x;
 
 /**
  * Pisteen pystyetäisyys.
  */
 public int y;

Esimerkki Javadoc-dokumentaatiosta:

/**
 * Vahvistaa shakkiliikkeen.
 * 
 * <p>Käytä {@link #teeSiirto(int alkuSarake, int alkuRivi, int loppuSarake, int loppuRivi)} shakkinappulan siirtämiseen.
 * 
 * @param alkuSarake    sarake josta nappula siirtyy
 * @param alkuRivi      rivi josta nappula siirtyy
 * @param loppuSarake   sarake johon nappula siirtyy
 * @param loppuRivi     rivi johon nappula siirtyy
 * @return              tosi, jos siirto on laillinen, muulloin epätosi
 * @since               1.0
 */
 boolean tarkistaSiirto(int alkuSarake, int alkuRivi, int loppuSarake, int loppuRivi) {
     // ...koodi
 }
 
 /**
  * Siirtää shakkinappulaa.
  * 
  * @see java.math.RoundingMode
  */
  void teeSiirto(int alkuSarake, int alkuRivi, int loppuSarake, int loppuRivi) {
      // ...koodi
  }