Има два типа коментари в Java. Първият е традиционния C-стил коментар който беше наследен от C++. Този вид започва с /* и продължава, евентуално на много редове, до срещане на*/. Забележете, че много програмисти започват новите редове от продължаващия коментар с *, така че често може да видите:
/* Това е
* Коментар който продължава
* На повече от една линии
*/
Забележете че всичко между /* и */ се игнорира така че е същото да кажем:
/* Това е коментар който
продължава на повече от една линия */
Втората форма на коментара идва от C++. Това е коментар на един ред, който започва с // и продължава до края на реда. Този тип коментар е удобен и много използван, понеже е лесен. Няма нужда да ловувате по клавиатурата за да намерите / и после * (просто натискате един клавиш два пъти) и няма нужда да затваряте коментара. Така че често ще видите:
// това е коментар на един ред
Коментар на документацията
Едно от умните неща в езика Java че проектантите не считаха писането на код за единствено важна активност – те също помислиха за документирането. Възможно най-големия проблем с документацията е нейната поддръжка. Ако документацията и кода са отделно, голяма суматоха става да се отразява всяка промяна. Решението изглежда просто: да се свърже кода към документацията. Най-лесния начин за това е всичко да се сложи в един единствен файл. За да се завърши картината обаче трябва специален синтаксис за документацията и инструмент, който да я извлича от общия файл. Това е направено в Java.
Инструментът за извличане на коментарите е наречен javadoc. Той използва част от технологията на Java компилатора за да гледа за специалните белези, които вие пишете в кода си. Не само се извличат коментарите, маркирани по този начин, но също се дава и името на класа или метода, свързан с коментара. По този начин може да се разминете с минимален труд при създаването на прилична документация.
Изходът от javadoc е HTML файл който може да видите със своя броузър. Този инструмент ви позволява да поддържате единствен сорс файл и да извличате от него полезна документация. Поради javadoc ние разполагаме със стандарт за създаване на документация и е достатъчно лесно да очакваме и даже да поръчаме документация за всичките Java библиотеки.
Синтаксис
Всичките команди на явадок са в /** коментари. Коментарът завършва с */ както обикновено. Има два основни пътя да се използва javadoc: вграждане на HTML и използване на “doc tags.” Doc tags са команди, които започват с ‘@’ и се слагат в началото на команден ред. (Водещата ‘*’ обаче се игнорира.)
Има три “типа” коментарна документация, които съответстват на елемента, който предхождат: клас, променлива или метод. Тоест, коментар на клас започва преди клас; коментар на променлива започва точно при дефиниране на променлива и коментар на метод започва точно при започването на дефиниция на метод. Като прост пример:
/** Коментар на клас */
public class docTest {
/** Коментар на променлива */
public int i;
/** Коментар на метод */
public void f() {}
}
Забележете че javadoc ще обработи коментарите само за public и protected членовете. Коментарите за private и “приятелски” (виж глава 5) се игнорират и няма да видите изход за тях. (Може да използвате -private флаг за да включите и private членовете.) Това има смисъл защото public и protected членовете са достъпни извън файла, което е перспективата на клиент-програмиста. Обаче всички class коментари се включват в изхода.
Изходът е HTML който има същия стандартен формат както останалата Java документация, така че потребителите ще се чувстват комфортно с вашия код и лесно ще го проучват. Струва си да се вмъкне гореспоменатия код, да се пусне през javadoc и да се види какъв HTML ще се получи, за да се видят резултатите.
Вграден HTML
Javadoc дава HTML команди чрез произведения HTML документ. Това позволява пълно използване на HTML; обаче основният мотив е да може да се форматира кода, както в:
/**
*
* System.out.println(new Date());
*
*/
Може също да използвате HTML точно както бихте го правили в обикновени Web документи:
/**
* You can even insert a list:
*
* - Текст едно
* - Текст 2
* - И три
*
*/
Запомнете че в документен коментар звездите в началото на линията се изхвърлят от javadoc, както и водещите празни позиции (шпации - б.пр). Javadoc преформатира всичко така че да съответства на стандартния формат на документацията. Не използвайте заглавия като или за вграден HTML понеже javadoc слага свои и вашите ще си пречат с тях.
Всички типове от коментарна документация – клас, променлива и метод – поддържат вграден HTML.
@see: отнасяне към други класове
Всичките три типа документни коментари могат да съдържат @see директиви, които позволяват да се отнасяте към други класове. Javadoc ще произведе HTML със @see хиперсвързани към другата документация. Формите са:
@see classname
@see fully-qualified-classname
@see fully-qualified-classname#method-name
Всяка добавя хиперсвързан “See Also” вход в генерираната документация. Javadoc няма да провери за валидност хипервръзките, които сте посочили.
Директива за документиране на клас
Заедно с вградения HTML и @see отнасянията документацията на клас може да включва и информация за версията и авторското име. Документацията за клас може също да се използва с интерфейси (описано е по-нататък в книгата).
@version
Има следната форма:
@version version-information
където version-information е каквато искате да включите информация. Когато -version флаг се сложи на javadoc командния ред, информацията за версията ще се извика специално за HTML документацията.
@author
Има следната форма:
@author author-information
където author-information е, предполага се, вашето име, но може да включва електронен адрес и друга подходяща информация. Когато -author флагът присъства в командната линия, информацията за автора се извиква специално в HTML документацията.
Може да имате няколко директиви за автор при списък от автори, но те трябва да са последователно разположени. Всичката авторска информация ще бъде събрана заедно в генерираната HTML документация.
Директиви за документиране на променлива
Може да включва само вграден HTML и @see отгнасяния.
Както и вградена документация и @see отнасяния, методите допускат директиви за параметри, връщани стойности и изключения.
@param
Формата е:
@param parameter-name description
където parameter-name е идентификатор в списъка на параметрите, description е текст който може да заеме няколко линии. Описанието се счита завършено, когато се срещне нова директива за документцията. Може да имате всясасъв брой, предполагаемо по едно за всеки параметър.
@return
Има следната форма:
@return description
където description дава смисъла на връщаната стойност. Може да продължи на следващи линии.
@exception
Изключенията ще се опишат в глава 9, но накъсо те са обекти, които могат да бъдат “изхвърлени” от метод, който се е провалил. Въпреки че само едно изключение може да възникне като извикате метод, конкретен обект би могъл да произведе неограничен брой типове изключения, всяко от които трябва да се опише. Така че формата на директивата е:
@exception fully-qualified-class-name description
където fully-qualified-class-name дава недвусмислено име на клас, който е описан някъде, а description (може да заеме няколко линии) казва защо този конкретен случай на изключение може да възникне при викането на метода.
@deprecated
Това е ново в Java 1.1. То е за да се бележат черти, които са били заместени от по-нови такива. Белегът съветва да не се използва повече старата черта, понеже в бъдеще тя вероятно ще бъде махната. Методите които са маркирани с @deprecated карат компилатора да издаде предупреждение, ако се използват.
Пример за документация
Ето пак първата Java програма, този път с добавени коментари за документация:
//: c02:Property.java
import java.util.*;
/** The first Thinking in Java example program.
* Lists system information on current machine.
* @author Bruce Eckel
* @author http://www.BruceEckel.com
* @version 1.0
*/
public class Property {
/** Sole entry point to class & application
* @param args array of string arguments
* @return No return value
* @exception exceptions No exceptions thrown
*/
public static void main(String[] args) {
System.out.println(new Date());
Properties p = System.getProperties();
p.list(System.out);
System.out.println("--- Memory Usage:");
Runtime rt = Runtime.getRuntime();
System.out.println("Total Memory = "
+ rt.totalMemory()
+ " Free Memory = "
+ rt.freeMemory());
}
} ///:~
Първия ред:
//: Property.java
използва моя собствена техника за слагане на ‘:’като специален маркер за коментара, съдържащ името на файла. Последния ред също свършва с коментар, който показва края на вистинга на сорсовия код, което позволява да бъде автоматично извлечено от текста на книгата и да бъде дадено на компилатора. Това е описано детайлно в глава 17.
Сподели с приятели: |