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ä.
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:
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. |
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
}
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
}