В реальных приложениях вы хотите сообщить другим программистам, каковы ваши классовые и методические контракты. Что метод требует от своего вызывающего? Что это гарантирует о своем результате? Это потокобезопасно? Избегайте этого стиля документации:
/**
* Set the person's age.
* @param age The age to give this Person.
*/
public void setAge(final int age) {
this.age = age;
}
В документации есть все шумы; все, что он говорит, - то, что setAge
устанавливает age
, и любой может предположить это.
Вместо этого напишите это как:
/**
* Set the person's age.
* @param age The age to give this Person. {@code age} must be nonnegative.
* @throws IllegalArgumentException if {@code age < 0}.
*/
public void setAge(final int age) {
if (age < 0) {
throw new IllegalArgumentException(
"Attempt to set a Person's age to a negative value: " + age);
this.age = age;
}
Также возможно использовать аннотации JSR 303 для документирования ограничений и даже для их принудительного применения. Подпись будет:
public void setAge(final @Min(0) int age);