如何记录Java副作用

tma*_*hal 5 javadoc side-effects

是否有针对包含副作用的Java / JVM语言方法编写javadocs的标准或最佳实践?

我定义了一个void方法,该方法修改了方法参数之一,但不知道如何记录实际的返回值(因为没有实际的返回值)。

/**
  * @param obj - reference object
  * @return obj - obj.name is changed to 'hello' //TODO figure out javadoc annotation
 */
void methodName(Object obj) {
   if (obj != null) {
       obj.name = "hello";
   }
}
Run Code Online (Sandbox Code Playgroud)

似乎没有标记对象上副作用的好方法,因为@param和@return批注并不能真正指示正在发生的事情。

Hoo*_*pje 3

没有标准的 Javadoc 注释来描述副作用。副作用通常在该方法的人类可读描述中提及。在您的情况下,作为参数传递的对象被修改,因此您可以考虑在标记后简单地重复副作用@param

无论如何,该@return标记不是记录副作用的正确位置:您的方法具有void返回类型,因此它不会返回任何内容。

对于您的情况,您的 Javadoc 可能如下所示:

/**
 * Methods a name. This method sets the "name" attribute of obj to "hello".
 * @param obj reference object ("name" attribute is modified by this method)
 */
void methodName(Object obj) {
   if (obj != null) {
       obj.name = "hello";
   }
}
Run Code Online (Sandbox Code Playgroud)