我应该使用JavaDoc弃用还是Java中的注释?

我应该使用JavaDoc弃用还是Java中的注释?,java,annotations,javadoc,deprecated,Java,Annotations,Javadoc,Deprecated,目前,有两种方法可以在java中将代码标记为已弃用 通过JavaDoc /** * @deprecated */ 或作为注释: @Deprecated 这就是我的问题——当使用Eclipse时将一个方法标记为已弃用时,我发现两者都声明有点过分。我真的只想用一个 但是,使用注释是否为编译器提供了实际有用的附加信息 但是,仅使用注释,我无法说明该方法被弃用的原因——我只能使用JavaDoc来说明,并且在不说明原因的情况下弃用方法 那么,我只能使用其中一个吗?或者我真的应该学会两者都指定吗?您

目前,有两种方法可以在java中将代码标记为已弃用

通过JavaDoc

/**
 * @deprecated
 */
或作为注释:

@Deprecated
这就是我的问题——当使用Eclipse时将一个方法标记为已弃用时,我发现两者都声明有点过分。我真的只想用一个

但是,使用注释是否为编译器提供了实际有用的附加信息

但是,仅使用注释,我无法说明该方法被弃用的原因——我只能使用JavaDoc来说明,并且在不说明原因的情况下弃用方法


那么,我只能使用其中一个吗?或者我真的应该学会两者都指定吗?

您应该两者都使用。注释允许编译器在使用不推荐的方法时显示警告,javadoc解释了原因。两者都很重要

根据Oracle的Java注释:

当一个元素被弃用时,还应该使用Javadoc@deprecated标记来记录它


您应该同时指定这两个选项

注释让编译器知道它,并在使用该方法时触发警告。 JavaDoc属性让开发人员在开始使用它之前知道

这是两件完全不同的事情

来自:

注:Java语言规范 要求编译器发出警告 当类、方法或字段 用@Deprecated注释标记 都用过了。编译器不是必需的 由Java语言规范来实现 当类、方法、, 或标记为@deprecated的字段 虽然 Sun编译器目前正在这样做

因此,基本上,如果您想保证会出现编译器警告,就需要使用注释。由于一些API设计师惊人的无能,您还需要指定javadoc标记来给出解释


就个人而言,我认为注释是无用的,在修复之前应该忽略它,因为任何好的编译器或IDE都会显示带有javadoc标记的警告。

您应该同时编写这两个注释。 @Deprecated-Anotation用于编译器,@Deprecated-JavaDoc标记用于想知道为什么不推荐使用的人

示例如下所示:

/**
* @deprecated We dont need this Method because ...
*/
@Deprecated
public void doStuff(){..}

这可以通过一个好的IDE轻松处理

例如,当我在方法或字段上创建一个javadoc@Deprecated时,Eclipse会自动添加@Deprecated注释


因此,我只需编写带有适当解释的javadoc,让IDE在我保存文件时负责添加@Deprecated注释。

如果其他程序员没有您的源代码怎么办?他不会知道您的方法已被弃用。我会说使用注释@Deprecated@t-edd:如果其他程序员既没有源代码也没有javadocs(也没有显示注释),那么意外使用不推荐的API是其中最小的问题。@Michael Borgwardt我只是想详细说明它会带来什么问题。这是我唯一能想到的。有时,您可以省略下载源代码和javadoc,而使用不推荐的api,这些api在下一个版本中不会出现……这些都不是什么不同的事情。如果注释允许解释作为参数,那么也可以向开发人员显示。@Michael您自己的回答强调了它们之间的区别。事实上,它甚至与我的想法相同。不,我的回答强调,javadoc标记仍然是需要的,只是因为注释设计得很糟糕。注释是开发人员的代码元数据和信息,就像方法符号一样。需要2个标记是愚蠢的。注释不应该存在,因为没有文档,它几乎一文不值。事实上,现在我不明白为什么这个特殊的东西被标记为不推荐。没有@Deprecated javadoc标记,所以我不知道。这太糟糕了。这几乎比什么都没有更糟糕,因为有时有人说“不要用它”,但不是为什么。抑制上升的冲动。然而,Oracle编译器也会为javadoc标记显示一个警告,因此并不真正需要注释。@Michael-在许多情况下(但不是我想象的全部),这可以通过
@SuppressWarnings(“deprecation”)
@MichaelBorgwardt控制。我理解你的想法,但太多的这些最终会导致“无论如何都不要编写文档,因为您只能信任源代码”。javadoc注释确实起到了一定的作用,例如,它是唯一一个可以指导用户“使用这个替代品”的地方。阿门·埃德温。需要两个注释的事实很糟糕。@MichaelBorgwardt javac抱怨如果使用Javadoc标记时没有注释。这是有意义的,因为另一个编译器可能只是检查注释。“因为任何好的编译器或IDE也会显示带有javadoc标记的警告。”而且任何体面的程序员都不会依赖编译器来告诉他不推荐的东西,他会寻找新的或更改过的API的文档。@jwenting,查找文档是浪费人的时间。让机器知道是否有什么东西在报警,并告诉你。那是他们的工作。@jwenting我不同意。注释和Javadoc是程序员“了解”API的一种方式。这是一种有效的文档形式。只要有可能,程序员应该用自己的智慧去思考有趣的东西,而不是从不知从何处寻找文档。@jwenting:好的,但是一个特定的API被弃用这一事实怎么会是基础的一部分呢?编译器警告指示在代码体中使用不推荐的API如何“预测程序员的意图”?我想最好的办法是@deprecated注解可以支持一个字符串“value”,它可以接受不推荐的原因的解释。这种解释似乎是使用javadoc方式而不是annot的唯一原因