简单的 Getter/Setter 注释

2022-08-31 08:01:21

你用什么惯例来评论 getter 和 setters?这是我在很长一段时间内一直想知道的事情,例如:

/**
 * (1a) what do you put here?
 * @param salary (1b) what do you put here?
 */
public void setSalary(float salary);

/*
 * (2a) what do you put here?
 * @return (2b)
 */
public float getSalary();

我总是发现我为1a / b和2a / b写了完全相同的东西,类似于1a)设置员工的工资,1b)员工的薪水。这似乎太多余了。现在我可以看到更复杂的东西,你可以在(a)部分写更多,以提供上下文,但对于大多数的getters/setters来说,措辞几乎完全相同。

我只是好奇,对于简单的getters/setters,是否可以只填写(a)部分或(b)部分。

你觉得怎么样?


答案 1

绝对毫无意义 - 你最好没有这种废话混乱你的代码:

/**
 * Sets the foo.
 * 
 * @param foo the foo to set
 */
public void setFoo(float foo);

非常有用,如果有必要的话:

/**
 * Foo is the adjustment factor used in the Bar-calculation. It has a default
 * value depending on the Baz type, but can be adjusted on a per-case base.
 * 
 * @param foo must be greater than 0 and not greater than MAX_FOO.
 */
public void setFoo(float foo);

特别是对属性实际含义的解释在域模型中可能至关重要。每当我看到一颗豆子充满了只有投资银行家,生物化学家或量子物理学家才能理解的晦涩名称的属性,并且评论解释了setGobbledygook()方法“设置了gobbledygook”,我就想扼杀某人。


答案 2

我通常只为二传手填充参数部分,为 getter 填充@return部分:

/**
 * 
 * @param salary salary to set (in cents)
 */
public void setSalary(float salary);

/**
 * @return current salary (in cents, may be imaginary for weird employees)
 */
public float getSalary();

这样,javadoc检查工具(例如Eclipse的警告)将变得干净,并且没有重复。


推荐